我有一个文本文件,其中包含2行样本DNA序列,使用pcregrep,我希望找到与"CCC“匹配的模式,特别是跨越多行的模式(参见下面test.txt中第1行的末尾到第2行的开头)。
test.txt:
AGAGUGGCAAUAUGCGUAUAACGAUUAUUCUGGUCGCACCCGCCAGAGCAGAAAAUAUUGGGGCAGCGCC
CAUGCUGGGUCGCACAUGGAUCUGGUGAUAUUAUUGAUAAUAUUAAAGUUUUCCCGACAUUGGCUGAAUA使用命令:
pcregrep -M --color "C[\n]?C[\n]?C" test.txt返回:
AGAGUGGCAAUAUGCGUAUAACGAUUAUUCUGGUCGCA**CCC**GCCAGAGCAGAAAAUAUUGGGGCAGCG**CC**
**C**CAUGCUGGGUCGCACAUGGAUCUGGUGAUAUUAUUGAUAAUAUUAAAGUUUU**CCC**GACAUUGGCUGAAUA它似乎正确地突出了第1行中的2C,但是它突出了第2行的第一个C,然后开始完全打印第二行,给我一个C的复制。
我在这里做错了什么,如何避免重复第2行的'C‘?
发布于 2020-08-05 17:23:55
试着用这个:
pcregrep -M --color "(?<!C)(C\RCC|CC\RC)(?!C)" test.txt我假设您想要找到确切的3个C,而不是更多,而且超过3个C是可能的。如果这是不可能的,或者您不关心比3C更多的匹配,您可以使用这个更简单的正则表达式:
pcregrep -M --color "C\RCC|CC\RC" test.txt解释:
(?<!C) # Negative lookbehind: Don't match if there's a C before the match
( # One of these:
C\RCC # C + any kind of new line + CC
| CC\RC # CC + any kind of new line + C
)
(?!C) # Negative lookahead: Don't match it there's a C after the match参见演示这里。
https://stackoverflow.com/questions/63096124
复制相似问题