此问题已在此处有答案:
Restricting character length in a regular expression(1个答案)
3年前关闭。
我需要一个匹配固定长度模式的正则表达式的帮助。
例如,下面的正则表达式允许匹配的模式中最多有1 (
和1 )
:([^)(]*\(?[^)(]*\)?[^)(]*)
然而,我不能/不想使用这个解决方案,因为*
,因为我必须扫描的文本是非常大的使用它似乎真的影响了性能。
因此,我想强加一个匹配长度限制,例如使用{10,100}
。
换句话说,正则表达式应该只匹配
- 字符串中有0到1对括号
- 匹配的总长度是固定的,例如不是无限的(No
*
!)
This似乎是我的问题的解决方案,但我没有得到它的工作,我有麻烦理解它。我试图使用公认的答案,并创建了这个:^(?=[^()]{5,10}$)[^()]*(?:[()][^()]*){0,2}$
这似乎并不像预期的那样工作:https://regex101.com/r/XUiJZz/1
我无法使用克林星星操作员。
编辑
我知道这是一个可能的解决方案,但我想知道是否有更好的方法来做到这一点:([^)(]{0,100}\(?[^)(]{0,100}\)?[^)(]{0,100})
1条答案
按热度按时间v2g6jxz61#
因此,我想施加一个匹配长度限制,例如使用{10,100}
您可能需要在正则表达式中anchors添加一个lookahead assertion:
(?=.{10,100})
是先行条件,用于Assert字符串长度必须介于10
和100
之间。RegEx Demo