Regex 如何仅选择特定的单词?

Regex 如何仅选择特定的单词?,regex,Regex,使用字符串ant-apple-bat我只想选择ant和bat,而不选择苹果或任何空白 我试过一些不同的方法,比如 \bant\b\bbat\b 或 或 或 或 或 我知道上面的例子很愚蠢,但我只是在一个正则表达式测试仪上胡闹,试图弄明白。我以前做过regex,我知道了,但似乎不记得我是怎么做的。选择“蚂蚁”和“蝙蝠”似乎很简单,但显然不是。是否有办法取消选择匹配项或删除部分匹配项?使用非捕获组进行替换: (?:\bant\b|\bbat\b) 我想你理解错了。单个正则表达式匹配将仅匹配连续文

使用字符串
ant-apple-bat
我只想选择
ant
bat
,而不选择苹果或任何空白

我试过一些不同的方法,比如

\bant\b\bbat\b


我知道上面的例子很愚蠢,但我只是在一个正则表达式测试仪上胡闹,试图弄明白。我以前做过regex,我知道了,但似乎不记得我是怎么做的。选择“蚂蚁”和“蝙蝠”似乎很简单,但显然不是。是否有办法取消选择匹配项或删除部分匹配项?

使用非捕获组进行替换:

(?:\bant\b|\bbat\b)

我想你理解错了。单个正则表达式匹配将仅匹配连续文本。一个简单的正则表达式,如带有match ant或bat的
ant | bat
。但是,如果您想匹配ant和bat,忽略中间的文本将不起作用


将正则表达式与python或java等编程语言一起使用时,您可以循环执行多个匹配项并相应地执行操作。

如果您只需要两个不同的单词,则如下所示:

\b(ant|bat)\b
\b
是一个单词边界 括号是一个组 管道
|
是一个or语句

  • 词界
  • 后跟单词
    ant
    或单词
    bat
  • 以单词边界结尾

单词边界可能是您所期望的,空格、行尾、标点符号

对于非编码组
(ant)(?:apple)(bat)
\b(?:ant | bat)\b
@WSimm下面的答案解决了您的问题吗?如果是,请参阅或尝试
\b(ant | bat)\b
ant(?:.*)bat
ant(?:\sapple\s)bat
(ant)*[^a-z\s]*(bat)
(?:\bant\b|\bbat\b)
\b(ant|bat)\b