我是正则表达式的新手,偶然发现了一个我不太懂的表达方式。 表达式是:
.*[^0-9](?P<ref>[0-9]{3})[^0-9].*
我认为我理解了第一部分和最后一部分,但括号内的部分使我无法理解。我将非常感谢一个解释或一些链接,我可以找到帮助。 感谢。
答案 0 :(得分:3)
括号内的部分是named capturing group,它恰好匹配三位数(并允许该组由名称ref
引用)。添加此功能是因为在非常复杂的表达式中,使用命名组比通常编号的组更清晰(需要计算括号以查看哪个组是哪个)。
命名捕获引用的确切方式取决于正则表达式库和/或使用的语言。例如,在Python中:
>>> import re
>>> match = re.search(r'.*[^0-9](?P<ref>[0-9]{3})[^0-9].*', 'a234b')
>>> match.group('ref')
'234'
答案 1 :(得分:0)
这是您表达的简短图解说明:
.*[^0-9](?P<ref>[0-9]{3})[^0-9].*
用语言说:
.*
匹配任意数量的字符[^0-9]
匹配一个不是数字的字符(?P<ref>[0-9]{3})
匹配一组三个数字,并在结果中为组提供名称 ref [^0-9]
......显而易见.*
......显而易见