有没有办法通过正则表达式匹配固定长度字符串中的固定数量的字符?
示例,我想匹配字符串长度为5的所有字符串,并且正好有3个字母和2个感叹号(!)。感叹号可以在字符串中的任何位置。
示例匹配:abc !!,a!b!c,!! abc,a !! bc
我尝试使用前瞻匹配,但我无法限制长度。以下是我使用的正则表达式。
(?=\w*!\w*!\w*)[\w!]{5}
匹配!!! b和!!!!我也不想要。
答案 0 :(得分:3)
答案 1 :(得分:1)
可能最容易指定所有可能性。
(?=\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
(这不是有效的代码 - 只是一个概念)