假设我想在一个大号(300,000个字母)中找到“dogs”一词,并且字母之间的距离恰好是之间的40,000个字母。所以我做:
$mystring =~ m/d.{40000}o.{40000}g.{40000}s/;
这在其他(较慢的)语言中也能很好地工作,但是在Perl中,它使我“{,}中的数量词大于正则表达式中的32766”。
所以:
最佳答案
如果您确实需要快速执行此操作,那么我将根据Boyer-Moore string search的想法进行自定义搜索。正则表达式被解析为有限状态机。这样的FSM即便是巧妙,紧凑的表示形式,也不是执行您所描述的搜索的非常有效的方法。
如果您真的想继续做下去,现在就可以连接两个表达式,例如.{30000}.{10000}
,实际上与.{40000}
相同。
关于regex - Perl: “Quantifier in {,} bigger than 32766 in regex”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10625544/