2024-10-02 22:25:10 发布
网友
我试图找到一种方法来编写正则表达式,它匹配字符串中的任何5位数字,除了后面跟斜杠的数字。你知道吗
我搞不懂为什么这不管用:
r"\D(\d{%d})[^/]\D" % 5
示例
'dsadasd894665' -> NO MATCH 'dsadsa78954,4' -> 78954 'dsda78954/sdd' -> NO MATCH
你知道吗?你知道吗
你可以试试下面的正则表达式
(?<!\d)\d{5}(?=[^\d/]|$)
DEMO
说明:
(?<!\d)
\d{5}
(?=[^\d/]|$)
/
代码:
>>> import re >>> s1 = "dsadasd894665" >>> s2 = "dsadsa78954,4" >>> s3 = "dsda78954/sdd" >>> re.search(r'(?<!\d)\d{5}(?=[^\d/]|$)', s1) >>> re.search(r'(?<!\d)\d{5}(?=[^\d/]|$)', s2) <_sre.SRE_Match object at 0x7f0835855370> >>> re.search(r'(?<!\d)\d{5}(?=[^\d/]|$)', s3)
(?<!\d)(\d{5})(?!\/|\d)
试试看这个。这个很好。看到了吗演示。你的正则表达式不以0宽度开始或结束断言。所以呢它实际上需要1个字符在前面,2个字符在前面。你知道吗
http://regex101.com/r/yA5iD9/16
正则表达式不起作用的原因是由于\D的原因。我不知道为什么要把它们放进去。另一个问题是[^/]与字符串的结尾不匹配,因此请改用?!。你知道吗
\D
[^/]
?!
以下工作:
r"(\d{%d})(?!\/)" % 5
你可以试试下面的正则表达式
DEMO
说明:
(?<!\d)
匹配项前面不会有数字。你知道吗\d{5}
正好是5位数字。你知道吗(?=[^\d/]|$)
后面必须跟一个非数字或/
或行尾锚点。你知道吗代码:
试试看这个。这个很好。看到了吗演示。你的正则表达式不以0宽度开始或结束断言。所以呢它实际上需要1个字符在前面,2个字符在前面。你知道吗
http://regex101.com/r/yA5iD9/16
正则表达式不起作用的原因是由于
\D
的原因。我不知道为什么要把它们放进去。另一个问题是[^/]
与字符串的结尾不匹配,因此请改用?!
。你知道吗以下工作:
相关问题 更多 >
编程相关推荐