匹配除一个以外的所有单词

时间:2010-01-21 09:05:15

标签: regex

说我有一句话:

  

我也是一个好买的坏男孩

如何使用正则表达式选择句子中除男孩以外的每个单词?

7 个答案:

答案 0 :(得分:42)

您可以使用负面看待

\w+\b(?<!\bboy)

负面展望,因为不是所有的支持负面看起来

(?!boy\b)\b\w+

您可以阅读有关负面展望here

的信息

答案 1 :(得分:10)

尝试:

\b(?!boy\b).*?\b

表示:

  • 零宽度分词(\b
  • 这不是“男孩”和另一个单词中断;
  • 后面是非贪婪的任何字符;
  • 直到另一个单词休息。

注意:单词分隔符合字符串的开头,字符串的结尾以及从单词(数字,字母或下划线)到非单词字符的任何转换,反之亦然。

答案 2 :(得分:3)

哪种语言?你为什么要使用正则表达式?

answer = yourString.Replace( "boy", "" );

答案 3 :(得分:3)

/\b(?!boy)\S+/g

答案 4 :(得分:1)

替换男孩一无所获......在Perl中将是:

s/boy //g

答案 5 :(得分:1)

如果您使用“男孩”作为分离器,您将获得剩余部分。 您可以将它们用作选择键。

>>> re.split("boy","I am a good buy and bad boy too")
['I am a good buy and bad ', ' too']

答案 6 :(得分:0)

我用http://regex101.com测试了以下内容:

\b(?!boy)\S+|\w*\b$

这提供了所有由空格分隔的单词的列表,但仅排除了要求的单词“ boy”。