Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python正则表达式组匹配中忽略字符串?_Python_Regex - Fatal编程技术网

如何在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'}
如何让同一个正则表达式匹配group
b
,但单独匹配一个特定后缀(或一组后缀),如果它存在(它们存在)?理想的情况是这样

>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) ^ ^
第一个指示的
使
+
量词不贪婪,因此它消耗尽可能少的量

第二个指示的
使组成为可选组


$
是必需的,否则非贪婪加可选性将不匹配。

缺少第一个额外的
来制作一个非贪婪的
+
,非常好,谢谢。我正在删除我的答案,但原始答案最后没有
$
,而
+?
与我的答案一样。