这个:
echo BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BBBBBBBBBBBBBBBBBBBBBBBBBBBBA |
perl -pe '/^(.*?B(?:A.*?B){30})A/'
在我的机器上花费了惊人的 8 秒。我曾预计它最多需要几毫秒。
这需要 < 10 毫秒:
echo BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BA BBBBBBBBBBBBBBBBBBBBBBBBBBBBA |
perl -pe '/^(.*?B(?:A.*?B){30})A/'
我怎样才能让第一次走得更快?
我需要 A 和 B 成为正则表达式,即它们不仅仅是单个字母。
使用负前瞻和
.
:不是很漂亮,但它确实有效。