我正在尝试为一组单词编写正则表达式。我想只选择具有一个或多个子串重复的单词。
例如,在以下词中:
香蕉 baba nano 娜娜 nanna
我只想选择单词banana,baba,nana和 NOT 想要选择nano和nanna。我想在这里找到的是包含 ba 或 na 一次或多次的单词,而不包含除 ba的一个或多个实例以外的任何单词的单词或 na 。因此,不应该选择nanna,因为它在两个 na 之间包含额外的 n 。
我尝试了很多正则表达式,却找不到确切的结果。 到目前为止,这是我坚持的正则表达式。
\ W +(BA | NA)
这也选择了我不想要的nanna。 我是regex的新手,已经尝试了很多示例和教程,并且还看了一会儿。真的需要帮助。
P.S我正在使用this website来测试我的正则表达式
P.S.S如果您计划向某个问题投票,请留下反馈,以便我能更好地了解我哪里出错了。
答案 0 :(得分:1)
\b(?:[bn]a)+\b
演示:https://regex101.com/r/iFRfBC/1
说明:
\b
- 匹配“单词边框”,防止在匹配项之前(或跟随,在模式结尾处)附加字母。
(?: ... )+
- 一个(非捕获)组,量化一次或多次。
[bn]a
- 文字b
或n
,后跟a
。