0

我正在尝试使用 python 哟匹配字符串。

>> self._regexs = re.compile("(?P<g0>.*AMD$)|(?P<g1>.*AMD$)|(?P<g2>.*AMD$)|(?P<g3>.*)", re.DEBUG)
>> m = self._regexs.match("AMD")
>> print m.groups()
('AMD', None, None, None)

我原以为 m.groups() 会显示:

>> print m.groups()
('AMD', 'AMD', 'AMD', None) 

但显然我做错了什么。我想知道为什么这个解决方案不起作用以及如何更改它,以便我得到我正在寻找的结果。

4

1 回答 1

3

正则表达式的作用greedy在于它将接受第一个匹配项。在您的示例中,这是第一个捕获组,具有您的特定输入。替换表达式(由 表示|)将始终匹配样本字符串满足的第一个替换。

看起来您正在尝试创建一个无法完成的正则表达式类型,因为它需要对 's 之间的每个不同的不同子正则表达式进行switch回溯。使用单个正则表达式无法实现您希望达到的结果。case|

也可以看看:

于 2012-12-03T14:29:30.920 回答