我有以下正则表达式:
egrep '(chr1 .*n70$|chr1 .*n70-)' results/files/forbidden_variants
匹配
chr1 n70
chr1 n70-n79
chr1 n70-n79-n83
chr1 n70-n79
chr1 n70-n79-s15-s16
chr1 n70
chr1 n70-n91
chr1 n70
并且速度非常慢,因为我用数百万次替换n70这样的id。
因此我想摆脱OR。我写了:
egrep '(chr1 .*n70[-\$])' results/files/forbidden_variants
但它不起作用,因为我没有使用此命令匹配行尾。输出如下:
chr1 n70-n79
chr1 n70-n79-n83
chr1 n70-n79
chr1 n70-n79-s15-s16
chr1 n70-n91
我在这里做错了什么? :)谢谢。
答案 0 :(得分:1)
只需在当前正则表达式中添加+:
egrep '(chr1 n70[-\$]+)' results/files/forbidden_variants
答案 1 :(得分:0)
为什么不简单地使用
chr1 n70
你可以使用OR
chr1 n70($|-)
这基本上等同于你的第一个表达式,但是在你的第一个表达式中,我认为你的匹配中不需要。*。