regex - 正则表达式最小长度

标签 regex

这最终将成为更大表达式的一部分,但我在这里将其简化为更简单的形式(即,真正有可能是 40 个字符,而不是这里的 19 个字符)。给定以下输入:

;123?T

我与这个正则表达式成功匹配:
^(?:;(\d{0,19})\?.){1,40}$

但是,我没有与此正则表达式匹配:
^(?:;(\d{0,19})\?.){3,40}$

我唯一要改变的是最小长度,这两个输入都应该满足。为什么第一个找到匹配项而第二个没有?也许我只是不理解这个量词,但我认为它只是 {MIN, MAX}。

此外,我已经在以下两个在线测试人员中对此进行了测试:

regular-expressions.info

regexpal.com

最佳答案

用表达式的第一部分 ^(?:;(\d{0,19})\?.)您正在匹配所有这些 ;123?T .

用表达式的下一部分 {1,40}您是说匹配上述 1 到 40 次。请注意,如果您尝试匹配 ;123?T连续3次,这个显然不行,你说{3,40}就是这种情况.

关于regex - 正则表达式最小长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097882/

相关文章:

python - 从字符串中删除尾随的特殊字符

javascript - 正则表达式需要将名称大写,其余部分小写,并正确处理像 McDonald 这样的名称

regex - 正则表达式,匹配大括号外的字符 { }

java - 多个正则表达式

regex - 是的,验证密码至少包含一个特殊字符

c# - 正则表达式查找信用卡模式不排除超过 16 位的信用卡模式

RegEx:如果某个字符在引号内,则不匹配它

Javascript正则表达式只留下单词(国际版)

regex - 在 PostgreSQL 中搜索 jsonb 数组

regex - Perl 正则表达式 : replace all\n to "|", 除了 a\n 后跟一些静态文本(abc)