我想匹配所有字符串,首先是1至4(小写)字母,然后是1至4位数字,该序列的总长度(字母+数字)应为5。字母和数字不能混在一起。然而,实际的字符串要长得多,这个5序列后面没有任何明显的单词边界(例如,它后面可以跟[a-z0-9]
)。然而,所讨论的正则表达式应该只与前5个字符有关。你知道吗
例如:
a1111
,aa111
,abc12def
,abc12345
。。。你知道吗a1a1a
,aa11a
,aa11
,1aaaa x
。。。你知道吗所以我需要像^([a-z]{1,4})[0-9]{5 - length of \1}
这样的东西。你知道吗
This question似乎有点关联,但我不知道如何使第二组的长度依赖于第一组。This answer建议对所有可能的字符进行前瞻性处理,但不能防止混淆。你知道吗
我不想只对字符串的前五个字符执行匹配(然后检查实际匹配的长度),因为我想扩充这个正则表达式,以便用其他模式匹配字符串的其余部分。你知道吗
出于示例的考虑,组的长度很小,但实际上要长得多(因此手动指定各种组合不是一个选项;自动生成包含所有组合的regex会让我担心性能)。你知道吗
具体来说,我使用的是python3.6,但我很高兴解决方案也考虑了其他regex风格。你知道吗
你可以用下面的方法来欺骗那些不得不做改变的人。你知道吗
See regex in use here
\b
在单词边界断言位置[a-z]{1,4}
匹配1到4次之间的小写字母\d{1,4}
匹配1到4倍之间的数字(?<=\b[a-z\d]{5})
正的lookback确保前面正好有5个小写字母和数字的组合正则表达式不能计数,您需要使用如下替换:
Regex Demo
相关问题 更多 >
编程相关推荐