用于查找包含特定子字符串的一个或多个实例的字符串的正则表达式

Regex expression to find word string containing one or more instances of a specific substring

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

比如下面的单词中:

banana baba nano nana nanna

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

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

\w+(ba|na)

这个selects nanna也是我不想要的。我是正则表达式的新手,试过很多例子和教程,也看了一段时间。

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

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

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

解释:

\b - 匹配 "word border",防止其他字母出现在匹配之前(或在模式末尾之后)。

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

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