请输入以下示例文本:
neco nechcem neco nechcem neco chcem和neco nechcem
我想捕获文本:
“ chcem”
(与nechcem相同,但在此示例中,我将其重命名)
我的问题是我有此正则表达式:
(chcem)(?:(?<!neco).)*?y
还有其他写方法吗?因为,当我将此正则表达式用于大文本时,会发生灾难性的回溯吗?
答案 0 :(得分:0)
您要捕获的单词“ chcem”可以与单词边界\ b一起使用。 检查此Perl解决方案
$ export str="neco nechcem neco nechcem neco chcem y neco nechcem"
$ perl -e 'BEGIN { $x=$ENV{str}; while($x=~/(\bchcem\b)/g) { print "$1\n" } } '
chcem
$ export str="neco nechcem neco nechcem neco chcem y neco nechcem dasd chcem ab"
$ perl -e 'BEGIN { $x=$ENV{str}; while($x=~/(\bchcem\b)/g) { print "$1\n" } } '
chcem
chcem
$