[英]Match non-capturing group multiple times
我非常努力地制作一个好的标题,但我不确定我是否问对了。 这是我最好的尝试:
我正在使用 Python 的正则表达式
我需要使用命名组匹配数字:
15x20x30 -> 'values': [15,20,30]
15bits -> 'values': [15]
15 -> 'values': [15]
x15 -> 'values': [15]
但不应匹配:
456.48
888,12
6,4.8,4684.,6
到目前为止,我最好的尝试是:
((?:[\sa-z])(?P<values>\d+)(?:[\sa-z]))
我使用[\sa-z]
而不是单词边界,因为15x20
是两个不同的值。
但是对于15x20
的情况,它无法匹配15
和20
。 如果我在15x 20
中放置一个额外的空间,它确实有效。 我如何告诉它在最后“重置”非捕获组,以便它在开始时也适用于非捕获组?
您可以使用
(?<![^\sa-z])\d+(?![^\sa-z])
不区分大小写的版本:
(?i)(?<![^\sa-z])\d+(?![^\sa-z])
或者,使用re.I
/ re.IGNORECASE
标志编译模式。
查看正则表达式演示
细节
(?<![^\sa-z])
- 如果紧靠左侧没有空格或小写字母(如果使用(?i)
或re.I
,则为任何 ASCII 字母,则匹配失败) )\d+
- 1+ 位(?![^\sa-z])
- 如果紧邻右侧没有空格或小写字母(如果使用(?i)
或re.I
任何 ASCII 字母),则匹配失败的负前瞻
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.