Regex检查一个单词在行中正好出现三次



我正在尝试创建一个Regex。我有4个Yes/No问题,我将答案存储在文本字段中,如YesYesNoNoYesNoNoYes等。

我希望我的Regex检查答案行是否正好包含3Yes

我试过

Yes{3}, [r'(Yes)W+']

以及其他一些愚蠢的选择。

如果您想在只包含NoYes的输入文本中将匹配项限制为3个Yes,请考虑以下regex:

^(?:(?:No)*Yes){3}(?!.*Yes)

RegEx演示

RegEx详细信息:

  • ^:启动
  • (?::启动非捕获组
    • (?:No)*:匹配0个或多个No字符串
  • Yes:匹配文本Yes
  • ){3}:非捕获组。重复此组3
  • (?!.*Yes):否定的前瞻性断言,在匹配Yes3次之后,我们没有Yes字符串的另一个实例

如果您的regex风格上没有前瞻性,您可以使用以下regex:

^(?:(?:No)*Yes){3}(?:No)*$

相关内容