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李>
- 以非贪婪的方式后跟任何字符李>
- 直到另一个单词破译
>>> 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$