我有一个正则表达式模式如下:
.*\b(?P<core>[A-Z][0-9]?\b.*)(?P<extra>\b[0-9]+[xX][0-9]+.*)?\.png
要匹配一些字符串,如下所示: -
UI SCREEN 5-1 F2 ROUND TAB REFLECTION 224x18px.png
在Python中,我得到以下结果
{u'core': u'F2 ROUND TAB REFLECTION 224x18px', u'extra': None}
而不是
{u'core': u'F2 ROUND TAB REFLECTION ', u'extra': u'224x18px'}
据我所知,正则表达式在python中默认是贪婪的。所以我认为它应该有用。
我做错了什么?
答案 0 :(得分:1)
表达式(?P[A-Z][0-9]?\b.*)
可能不会按照您的想法执行...它将匹配:
将所有内容吞至终止.png
(应该是\.png
)
答案 1 :(得分:1)
在您第一次贪婪?
.*
import re
x = "UI SCREEN 5-1 F2 ROUND TAB REFLECTION 224x18px.png"
re.search(r'.*\b(?P<core>[A-Z][0-9]?\b.*?)(?P<extra>\b[0-9]+[xX][0-9]+.*)?.png', x).groups()
# OUTPUT
('F2 ROUND TAB REFLECTION ', '224x18px')
答案 2 :(得分:0)
你能像正在使用的那样编写正则表达式吗?因为我在你的正则表达式中看不到组名。
>>> re.match(r'(?P<core>[A-Z0-9- ]+) (?P<extra>[0-9]+[xX][0-9]+px)\.png', a).groups()
('UI SCREEN 5-1 F2 ROUND TAB REFLECTION', '224x18px')