3

哪个正则表达式会匹配前面没有字符串“soft”的字符串“war”的出现?换句话说,“第三次世界大战”中的“战争”会匹配,但“我的软件在哪里”中的“战争”不会匹配?此外,“远离我的仓库”会匹配,“知道”也会匹配。换句话说,我只是不希望字符串“software”匹配。

4

2 回答 2

5

如果您的正则表达式引擎支持lookbehinds: (?<!soft)war.

您可以使用 Perl 进行尝试:

$ perl -ne 'print if /(?<!soft)war/i' < my-text-file

这或多或少会起作用grep(但grep不支持lookbehinds,afaik)。

于 2013-05-29T19:04:51.843 回答
1

试试这个: '[^soft].*war' ,它接近但不完美,放入你的字符串组合,你会明白为什么,如果它唯一的'war'它没有识别,它也不会返回任何东西,它需要先于至少有一个字母的单词,但它不能以'soft'开头 你可以在你的程序中使用条件并将这个逻辑与一个正则表达式相结合,以匹配 melwil 指出的不属于任何子字符串的单词 war 吗?

于 2013-05-29T19:22:34.100 回答