正则表达式:忽略以特定字符开头的匹配项

时间:2014-04-24 08:56:11

标签: python regex

我有以下RegEx:

(.+?)\1+

用于识别字符串中的重复序列。但是匹配可能不仅仅由数字或点组成,而且它们也可能不是以带有数字的点或结尾开头。我尝试使用:

^[^\.](.+?)\1+$[\d]

但是这个解决方案不起作用。例如,它无法识别4F.4F.4F.

修改

我通过结合答案的所有想法找到了解决方案。它是:

(?!\.)(.+?)\1+(?<=\D)

4 个答案:

答案 0 :(得分:1)

这是你需要的。

result = re.findall(r"^(?!\.)(\w+\.)(?!.\d)\1+", subject)

<强> 样本 http://regex101.com/r/pA5bL0

答案 1 :(得分:1)

您需要在\D

之前加$(非数字)
^[^\.](.+?)\1+\D$

DEMO

答案 2 :(得分:1)

我使用Lookaheads:

(?!\.)(.+)(?<![0-9])\1+

演示:http://regex101.com/r/iQ0aT6

答案 3 :(得分:1)

这符合您的规格:

result = re.findall(r"([^.].*?\D)\1", subject, re.DOTALL)
相关问题