Я хочу проанализировать файл FASTQ с блоком регулярных выражений блоком. FASTQ файл выглядит следующим образом:Поисковый блок Regex с размером, равным предыдущему блоку
@EAS54_6_R1_2_1_413_324 // seqname
CCCTTCTTGTCTTCAGCGTTTCTCC // seq
+ // seqname #2
;;3;;;;;;;;;;;;7;;;;;;;88 // qual
@EAS54_6_R1_2_1_540_792 // seqname
TTGGCAGGCCAAGGCCGATGGATCA // seq
+ // seqname #2
;;;;;;;;;;;7;;;;;-;;;3;83 // qual
@EAS54_6_R1_2_1_443_348 // seqname
GTTGCTTCTGGCGTGGGTGGGGGGG // seq
+EAS54_6_R1_2_1_443_348 // seqname #2
;;;;;;;;;;;9;7;;.7;393333 // qual
И его формат:
<fastq> := <block>+
<block> := @<seqname>\n<seq>\n+[<seqname>]\n<qual>\n
<seqname> := [A-Za-z0-9_.:-]+
<seq> := [A-Za-z\n\.~]+
<qual> := [!-~\n]+
Проблема заключается в том, что я не могу обнаружить конец блока (или начало следующего блока), так как @
используется в <qual>
блоке слишком. Но <qual>
блок должен быть такого же размера, как <seq>
блок.
Вопрос: Можно ли написать регулярное выражение с одним размером группы, ограниченным другим размером группы?
Как этот (кроме \ 2.size знака):
(?:@([A-Za-z0-9_\.:-]+)\n([A-Za-z\n\.~]+)\n\+([A-Za-z0-9_.:-]*)\n([!-~\n]{\2.size}))*
^.....seqname.....^ ^.....seq......^ ^....seqname2....^ ^qual(should be same size as seq)^
UPDATE: Мы не можем искать @
маркеров, потому что он может появиться в <qual>
блоке
Regex не очень хорошо в логике который обычно принадлежит к языкам программирования/сценариев. –
Язык программирования? – ninjalj
@ninjalj POSIX regex, или ECMAS – LibertyPaul