【问题标题】:Regex expression to find word string containing one or more instances of a specific substring正则表达式查找包含特定子字符串的一个或多个实例的单词字符串
【发布时间】:2018-01-24 22:38:23
【问题描述】:

我正在尝试为一组单词编写一个正则表达式。我只想选择具有一个或多个重复子字符串的单词。

例如,在以下单词中:

香蕉 baba nano nana nanna

我只想选择单词banana、baba、nana 而想要选择nano 和nanna。我想在这里找到的是包含 bana 一次或多次的单词,而不是包含一个或多个 ba 实例以外的任何内容的单词na。因此,不应选择 nanna,因为它在两个 na 之间包含一个额外的 n

我尝试了很多正则表达式,但找不到确切的结果。 到目前为止,这是我坚持的正则表达式。

\w+(ba|na)

这也选择了我不想要的 nanna。我是 regex 的新手,已经尝试了很多示例和教程,也环顾了一段时间。

P.S 我正在使用this website 来测试我的正则表达式。

【问题讨论】:

标签: regex search nlp regular-language


【解决方案1】:

\b(?:[bn]a)+\b

演示:https://regex101.com/r/iFRfBC/1

解释:

\b - 匹配“单词边框”,防止其他字母出现在匹配项之前(或模式结尾处)。

(?: ... )+ - 一个(非捕获)组,量化一次或多次。

[bn]a - 文字 bn,后跟 a

【讨论】:

  • 所以只是想确认一下。您是否使用 (?:.....) 将结果组合在一起,对吗?
  • + 量词需要该组才能在此处按预期工作,否则它只会单独作用于 a
  • 非常感谢您对奥斯汀的解释。 :)
猜你喜欢
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多