Regex 正则表达式匹配中的固定字符数
有没有办法通过正则表达式匹配固定长度字符串中固定数量的字符 例如,我想匹配所有字符串,其中字符串长度为5,并且正好有3个字母和2个感叹号(!)。感叹号可以在字符串中的任何位置 示例匹配:abc!!,A.BCabc,a!!卑诗省 我尝试使用“前瞻”进行匹配,但无法限制长度。下面是我使用的正则表达式Regex 正则表达式匹配中的固定字符数,regex,regex-negation,regex-lookarounds,Regex,Regex Negation,Regex Lookarounds,有没有办法通过正则表达式匹配固定长度字符串中固定数量的字符 例如,我想匹配所有字符串,其中字符串长度为5,并且正好有3个字母和2个感叹号(!)。感叹号可以在字符串中的任何位置 示例匹配:abc!!,A.BCabc,a!!卑诗省 我尝试使用“前瞻”进行匹配,但无法限制长度。下面是我使用的正则表达式 (?=\w*!\w*!\w*)[\w!]{5} 这是一个很好的搭配!!!b和a!!!!还有我不想要的 指定所有可能性可能是最简单的 (?=\w\w\w!!|\w\w\!\w\!|\w\w\!!\w|\
(?=\w*!\w*!\w*)[\w!]{5}
这是一个很好的搭配!!!b和a!!!!还有我不想要的 指定所有可能性可能是最简单的
(?=\w\w\w!!|\w\w\!\w\!|\w\w\!!\w|\w!\w\w!|\w!\w!\w|\w!!\w\w|!\w!\w\w|!!\w\w\w)
正则表达式不能很好地处理组合/置换
如果组合的数量太多,则在第一个正则表达式收集潜在匹配的部分进行,第二个(及以后)继续验证
[\w!]{5}
match.count('!') == 2
match.count('\w') == 3
(这不是有效的代码——只是一个概念)您可以使用基于前瞻的正则表达式来实现这一点
^(?=(?:\w*!){2}\w*$)[\w!]{5}$
为什么不呢?但通过这种方法,您是否认为当您可以使用一个简单的非捕获组(带有锚)时,需要进行前瞻。对于第二种方法,您只需要计算
代码>因为你可以推断出其他字符的数量。第一,我只是取了原始的正则表达式并修改了它。对于第二种情况,是的,对于这种情况。正如我所说,这只是一个例子。