我正在尝试创建一个Regex。我有4个Yes/No
问题,我将答案存储在文本字段中,如YesYesNoNo
或YesNoNoYes
等。
我希望我的Regex检查答案行是否正好包含3Yes
。
我试过
Yes{3}, [r'(Yes)W+']
以及其他一些愚蠢的选择。
如果您想在只包含No
和Yes
的输入文本中将匹配项限制为3个Yes
,请考虑以下regex:
^(?:(?:No)*Yes){3}(?!.*Yes)
RegEx演示
RegEx详细信息:
^
:启动(?:
:启动非捕获组(?:No)*
:匹配0个或多个No
字符串
Yes
:匹配文本Yes
){3}
:非捕获组。重复此组3
次(?!.*Yes)
:否定的前瞻性断言,在匹配Yes
3次之后,我们没有Yes
字符串的另一个实例
如果您的regex风格上没有前瞻性,您可以使用以下regex:
^(?:(?:No)*Yes){3}(?:No)*$