用于检查单词的正则表达式恰好出现在一行中 3 次
Regex to check a word is present in line exactly three times
我正在尝试创建正则表达式。我有 4 个 Yes/No
个问题,我将答案存储在文本字段中,例如 YesYesNoNo
或 YesNoNoYes
等
我希望我的正则表达式检查答案行是否包含 3 Yes
.
我试过了
Yes{3}, [r'(Yes)\W+']
和其他一些愚蠢的选择。
如果您想在仅包含 No
和 Yes
的输入文本中将匹配项限制为 3 Yes
,请考虑以下正则表达式:
^(?:(?:No)*Yes){3}(?!.*Yes)
正则表达式详细信息:
^
: 开始
(?:
: 启动非捕获组
(?:No)*
:匹配0个或更多No
个字符串
Yes
:匹配文本Yes
){3}
:非捕获组。重复这组 3
次
(?!.*Yes)
:否定前瞻断言在匹配 Yes
3 次后我们没有 Yes
字符串的另一个实例。
如果前瞻在您的正则表达式风格上不可用,您可以使用此正则表达式:
^(?:(?:No)*Yes){3}(?:No)*$
我正在尝试创建正则表达式。我有 4 个 Yes/No
个问题,我将答案存储在文本字段中,例如 YesYesNoNo
或 YesNoNoYes
等
我希望我的正则表达式检查答案行是否包含 3 Yes
.
我试过了
Yes{3}, [r'(Yes)\W+']
和其他一些愚蠢的选择。
如果您想在仅包含 No
和 Yes
的输入文本中将匹配项限制为 3 Yes
,请考虑以下正则表达式:
^(?:(?:No)*Yes){3}(?!.*Yes)
正则表达式详细信息:
^
: 开始(?:
: 启动非捕获组(?:No)*
:匹配0个或更多No
个字符串
Yes
:匹配文本Yes
){3}
:非捕获组。重复这组3
次(?!.*Yes)
:否定前瞻断言在匹配Yes
3 次后我们没有Yes
字符串的另一个实例。
如果前瞻在您的正则表达式风格上不可用,您可以使用此正则表达式:
^(?:(?:No)*Yes){3}(?:No)*$