如何在python正则表达式组匹配中忽略字符串?
假设我有以下字符串如何在python正则表达式组匹配中忽略字符串?,python,regex,Python,Regex,假设我有以下字符串 >>> mystr = 'A-ABd54-Bf657' (由破折号分隔的字符组组成的随机字符串),并希望在单独的组中匹配开头部分和字符串的其余部分。我可以用 重新匹配('(?P[a-zA-Z0-9]+)-(?P[a-zA-Z0-9-]+)”,mystr) 这将生成一个如下所示的groupdict(): {'a':'a','b':'ABd54-Bf657'} 如何让同一个正则表达式匹配groupb,但单独匹配一个特定后缀(或一组后缀),如果它存在(它们存
>>> mystr = 'A-ABd54-Bf657'
(由破折号分隔的字符组组成的随机字符串),并希望在单独的组中匹配开头部分和字符串的其余部分。我可以用
重新匹配('(?P[a-zA-Z0-9]+)-(?P[a-zA-Z0-9-]+)”,mystr)
这将生成一个如下所示的groupdict()
:
{'a':'a','b':'ABd54-Bf657'}
如何让同一个正则表达式匹配groupb
,但单独匹配一个特定后缀(或一组后缀),如果它存在(它们存在)?理想的情况是这样
>myregex=
>>>关于match(myregex,'A-ABd54-Bf657').groupdict()
{'a':'a','b':'ABd54-Bf657','test':无}
>>>关于match(myregex,'A-ABd54-Bf657-blah').groupdict()
{'a':'a','b':'ABd54-Bf657-blah','test':无}
>>>关于match(myregex,'A-ABd54-Bf657-test').groupdict()
{'a':'a','b':'ABd54-Bf657','test':'test'}
谢谢。mystr='A-ABd54-Bf657'
mystr = 'A-ABd54-Bf657'
re.match('(?P<a>[a-zA-Z0-9]+)-(?P<b>[a-zA-Z0-9-]+?)(?:-(?P<test>test))?$', mystr)
^ ^
关于匹配(“(?P[a-zA-Z0-9]+)-(?P[a-zA-Z0-9-]+)(?:-(?Ptest))?$”,mystr)
^ ^
第一个指示的?
使+
量词不贪婪,因此它消耗尽可能少的量
第二个指示的?
使组成为可选组
$
是必需的,否则非贪婪加可选性将不匹配。缺少第一个额外的?
来制作一个非贪婪的+
,非常好,谢谢。我正在删除我的答案,但原始答案最后没有$
,而+?
与我的答案一样。