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

cgh8pdjw  于 2022-11-18  发布在  其他
关注(0)|答案(8)|浏览(198)

说我有句话:
我是个好买家,也是个坏男孩
如何使用正则表达式选择这个句子中除男孩以外的每个单词?

u4dcyp6a

u4dcyp6a1#

你 可以 用 * * 负 后面 看 * * :

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

中 的 每 一 个
或 * * 负 向前 看 * * 自 不 全 支持 负 向后 看

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

格式
您 可以 阅读 有关 负 前瞻 here

z9zf31ra

z9zf31ra2#

请尝试:

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

这意味着:

  • 零宽度断字(\b
  • 那后面是不是跟“小子”和另一个字断了;
  • 以非贪婪方式后跟任意字符;
  • 直到另一个单词中断。
    **注意:**断字与字符串的开头、结尾以及从单词(数字、字母或下划线)到非单词字符的任何转换相匹配,反之亦然。
j2datikz

j2datikz4#

如果你用“男孩”作为分割器,你会得到剩下的部分。你可以用那些作为选择键。

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

ndasle7k5#

将boy替换为nothing...在Perl中,这将是:

s/boy //g
nwwlzxa7

nwwlzxa76#

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

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

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

5sxhfpxr

5sxhfpxr7#

作为替代,如果p持续量词可用,则可以使用;

\w++(?<!boy)

与使用世界边界相比,它通常需要更少的步骤

bfrts1fy

bfrts1fy8#

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

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

相关问题