【发布时间】:2020-04-12 10:01:52
【问题描述】:
如何创建一个匹配单个字符作为一个组以及重复序列的正则表达式?
这是我找到的(不是我自己制作的):https://regex101.com/r/Vdhjld/1
正则表达式是
((?P<X>\S.*?)(?:, (?P=X))+)
字符串是
1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 5, 2, 5, 1
我希望它能够在字符串末尾获得单个 Group 'X'。现在它只返回 1, 2, 3, 1, 2, 3, 1, 2, 3 和 2, 5, 2, 5 作为完整匹配,但我希望它返回 1 以及完整匹配。我该怎么做?
【问题讨论】:
-
((?P<X>\S.*?)(?:, (?P=X))+)|(\d+(?=,|]))之类的怎么样? -
对于数字?使用 ([0-9]+)(, [0-9]+)* first group 是必须的第一个元素。第二组匹配 0 个或多个(逗号、空格、数字)
-
你的意思是这样吗?
((?P<X>\S.*?)(?:, (?P=X))+|[^\s,[\]])regex101.com/r/jf198X/1 -
我认为您只能使用其他人编写的替代方法来实现这一点。由于正则表达式希望尽可能地匹配,即使使用所有格或控制动词也不会给你想要的结果。
标签: python regex python-3.x string regex-greedy