我想在不使用 /s 的情况下完成这个操作:
(?:.|\n)+
我希望它快速。
这是更大的正则表达式的一部分,这就是我不能使用 /s 的原因。我已经测试过:
perl -pe 's/(?:.|\n)+//' # 30 MBytes/s
perl -pe 's/[^\777]+//' # 124 MBytes/s
它们不如 /s 快速:
perl -pe 's/.+//s' # 164 MBytes/s
我能以某种方式获得与 /s 相同的速度吗?
编辑:
perl -pe 's/(?s).+(?-s)//' # 162 MBytes/s
perl -pe 's/[\d\D]+//' # 162 MBytes/s
perl -pe 's/[\s\S]+//' # 161 MBytes/s
这些都是不错的选择。感谢。
[\d\D]
或[\s\S]
等呢? - choroba(?s:.)
的修改以及您列出的其他选项,它们都将产生完全相同的正则表达式程序,因此它们的性能是相同的。[\d\D]
和[\s\S]
是解决方法,只在5.24之后才起作用,因此这些选项更差。而(?s:.)
比(?s).+(?-s)
更好,因为它恢复了s
标志而不是关闭它。(它也更短。) - ikegami