通过正则表达式在多个位置中的一个或多个位置查找字符



我一直"欺骗;在新的Wordle游戏中,并用它来发展我的正则表达式技能。我正在处理一个由5个字符组成的英语单词列表,并编写正则表达式来寻找游戏的可能答案。我遇到了一个我不知道如何编写的正则表达式。Wordle会告诉你一个字符在单词中,但它不在某个位置。这意味着这个角色将出现在其他四个位置中的一个或多个位置。

所以,如果我知道这个词的第五个位置没有"n",我可以通过写来排除它

^....[^n]$

但事实上,我掌握的信息不止这些。除了"n"不在第五位之外,我还知道前四个字符中会有一个或多个"n"字符。我不知道如何指定任何字符在四个第一个位置中的三个位置都可以接受,并且"n"在其中一个位置也可以接受,但必须至少出现在一个位置。

我如何用正则表达式指定它?

假设支持Lookahead,则可以使用以下模式:

^(?=.*n).{4}[^n]$

演示

细分:

  • ^-字符串的开头
  • (?=.*n)-断言当前位置后面跟有零个或多个字符,然后是一个"n">
  • .{4}-匹配任意四个字符
  • [^n]-匹配除"n"之外的任何字符
  • $-字符串结束

您可以在4个位置中的1个位置使用与n字符匹配的组中的交替|

^(?:...n|..n.|.n..|n...)[^n]$

Regex演示

相关内容

最新更新