我真的很努力地打出一个好标题,但是我不确定我是否要求这个权利。这是我的最佳尝试:
我正在使用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
中放入多余的空间,它确实可以工作。我如何告诉它在结束时“重置”非捕获组,以便它在开始时也适用于非捕获组?
答案 0 :(得分:1)
您可以使用
array([[1, 2],
[3, 6],
[4, 5],
[6, 7]])
不区分大小写的版本:
(?<![^\sa-z])\d+(?![^\sa-z])
或者,使用(?i)(?<![^\sa-z])\d+(?![^\sa-z])
/ re.I
标志编译模式。
请参见regex demo
详细信息
re.IGNORECASE
-如果在紧靠左侧没有空格或小写字母(如果使用(?<![^\sa-z])
或(?i)
的任何ASCII字母),则后面的否定性查找将使匹配失败re.I
-1个以上数字\d+
-如果在紧靠右边没有空格或小写字母(如果使用(?![^\sa-z])
或(?i)
,则为ASCII字母)的否定超前匹配失败