【发布时间】:2020-02-01 01:46:12
【问题描述】:
我非常努力地制作了一个好的标题,但我不确定我问的是否正确。这是我最好的尝试:
我正在使用 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 是两个不同的值。
但是它无法匹配 15 和 20 对于 15x20 的情况。如果我在15x 20 中添加一个额外的空间,它确实有效。我如何告诉它在最后“重置”非捕获组,以便它在开始时也适用于非捕获组?
【问题讨论】:
-
使用
(?<=[\sa-z])(?P<values>\d+)(?=[\sa-z])或只使用(?<=[\sa-z])\d+(?=[\sa-z]),因为您在这里并不需要命名组。最好的是(?<![^\sa-z])\d+(?![^\sa-z]),它也将匹配字符串的开头/结尾(不确定您是否需要该功能)。 -
效果很好!我未能将字符串的开头与后向匹配,但真的没有想到这一点!谢谢
标签: python regex regex-group