Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配除一个以外的所有单词_Regex - Fatal编程技术网

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

Regex 匹配除一个以外的所有单词,regex,Regex,假设我有一句话: 我是个好孩子,也是个坏孩子 如何使用正则表达式选择这个句子中除boy之外的所有单词?哪种语言?为什么要使用正则表达式 answer = yourString.Replace( "boy", "" ); 把男孩替换成一无所有。。。在Perl中,这将是: s/boy //g 您可以使用负片向后看: \w+\b(?<!\bboy) 您可以阅读有关消极前瞻的内容尝试: 这意味着: 零宽度断字(\b) 后面不是“男孩”和另一个单词break 以非贪婪的方式后跟任何字符 直到

假设我有一句话:

我是个好孩子,也是个坏孩子


如何使用正则表达式选择这个句子中除boy之外的所有单词?

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

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

把男孩替换成一无所有。。。在Perl中,这将是:

s/boy //g

您可以使用负片向后看

\w+\b(?<!\bboy)
您可以阅读有关消极前瞻的内容

尝试:

这意味着:

  • 零宽度断字(
    \b
  • 后面不是“男孩”和另一个单词break
  • 以非贪婪的方式后跟任何字符
  • 直到另一个单词破译
注意:分词符匹配字符串的开头、结尾以及从单词(数字、字母或下划线)到非单词字符的任何转换,反之亦然。

如果使用“boy”作为拆分器,则会得到剩余部分。 您可以将其用作选择键

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

我测试了以下内容:


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

在什么语言/环境中?“选择每个单词”是什么意思?分别地一起?使用正则表达式。
/(?!boy)(.*?)/g
愚蠢的原因是什么?规范不明确,此解决方案与其中一种解释相匹配。请注意OP中的“单词”。这将匹配partials。所以,如果你想忽略“top”并且你做了这个替换,你也会点击“stopped”。所以这个答案是愚蠢的,因为它不是一个不必要的替换,不能解决问题,忽略了单词边界的问题,只是引入了更多的问题。它不使用正则表达式-这似乎对你来说是个问题。在我看来,您不必在所有情况下都使用正则表达式。这里有一个解决方案,但事实并非如此。您可以通过包含空格来查找单词边界。这个答案可能会对OP有所帮助,因为它引入了一种不使用正则表达式的新可能性。但OP可以自由接受任何最符合其要求的答案。正则表达式或非正则表达式,只要有效,我不在乎。查找单词时简单的字符串替换显然不行。这让我走上了正确的道路…使用regex匹配我需要的整个字符串,然后使用regex替换函数(在PHP中)删除其中我想要排除的部分+1回答错误,显然没有选择任何内容。
/\b(?!boy)\S+/g
\b(?!boy\b).*?\b
>>> re.split("boy","I am a good buy and bad boy too")
['I am a good buy and bad ', ' too']
\b(?!boy)\S+|\w*\b$