我真的很努力地想得到一个好的标题,但我不确定我是否问得对。以下是我最好的尝试:
我使用的是python风格的regex
我需要使用命名组匹配数字:
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
中添加一个额外的空间,它确实可以工作。如何让它在最后“重置”非捕获组,以便在开始时也对非捕获组起作用?你知道吗
你可以用
不区分大小写版本:
或者,用
re.I
/re.IGNORECASE
标志编译模式。你知道吗参见regex demo
细节
(?<![^\sa-z])
-如果紧靠左侧没有空格或小写字母(如果使用(?i)
或re.I
则为任何ASCII字母),则匹配失败的负查找\d+
-1+位(?![^\sa-z])
-如果右侧没有空格或小写字母(如果使用(?i)
或re.I
则为任何ASCII字母),则匹配失败的负向前看相关问题 更多 >
编程相关推荐