我是正则表达式的新手,不知道该怎么问这个问题,但我会尽我所能。
下面是我正在使用的一个简单表达式:
"^[0-9]{13}$"
字符串
根据Python文档,我可以设置这样一个范围来匹配一个长度在13到20个字符之间的数字字符串,例如:
"^[0-9]{13,20}$"
型
我的问题是,我如何从一个范围中排除某些“长度”?例如:
"^[0-9]{13,20 EXCEPT for 15 or 17}$"
型
在这个例子中,我想包括13和20之间的任何长度,除了15和17。
这可能吗?
我看过Python 3 regex文档,我个人无法找到一种方法来做到这一点,但我也没有经验,所以我可能会忽略一些东西。
2条答案
按热度按时间e37o9pze1#
在第二个模式中,你可以用一个 * 自定义/受限 * 的
^(?!(.{15}|.{17})$)
来替换字符串^
的开头(这是基于要排除的长度构建的)。这将确保匹配每个字符串的开头,但仅当这个字符串的长度不是15或17个字符时。字符串
下面是处理不同不连续范围的通用代码:
型
测试/输出:
型
使用的输入:
型
iibxawm42#
嗯.是的,你可以,但这将需要不止一个量词。
With alternatives:
字符串
With lookaheads:
型
With lookbehinds:
型
使用正常的Python代码:
型
选择一个。你喜欢哪一个。我个人喜欢最后一个,因为它非常清晰,即使对于那些不知道正则表达式的人来说。