Python 正则表达式:忽略以特定字符开头的匹配
我有以下正则表达式:Python 正则表达式:忽略以特定字符开头的匹配,python,regex,Python,Regex,我有以下正则表达式: (.+?)\1+ 它用于识别字符串中的重复序列。但比赛可能不仅仅由数字或点组成,也可能不以点开始或以数字结束。我尝试使用: ^[^\.](.+?)\1+$[\d] 但这一解决方案并不奏效。例如,它无法识别4F.4F.4F. 编辑: 我把所有答案的想法结合起来,找到了解决办法。它是: (?!\)(.+?)\1+(?此id是您需要的 result = re.findall(r"^(?!\.)(\w+\.)(?!.\d)\1+", subject) 演示 您需要在$之前放置
(.+?)\1+
它用于识别字符串中的重复序列。但比赛可能不仅仅由数字或点组成,也可能不以点开始或以数字结束。我尝试使用:
^[^\.](.+?)\1+$[\d]
但这一解决方案并不奏效。例如,它无法识别4F.4F.4F.
编辑:
我把所有答案的想法结合起来,找到了解决办法。它是:
(?!\)(.+?)\1+(?此id是您需要的
result = re.findall(r"^(?!\.)(\w+\.)(?!.\d)\1+", subject)
演示
您需要在$
之前放置\D
(非数字):
^[^\.](.+?)\1+\D$
我会使用Lookaheads:
(?!\.)(.+)(?<![0-9])\1+
(?!\)(.+)(?
演示:这符合您的规格:
result = re.findall(r"([^.].*?\D)\1", subject, re.DOTALL)
如果没有字符串中的点,这个版本就不匹配了。是的,有很多方法来表达同样的东西。很高兴你能用它。嘿,我注意到你还没有投票给StAdvOpLoad。如果我的答案或另一个答案解决了你的问题,请考虑“接受它”。单击左侧的复选标记和箭头,因为这是声誉系统的工作方式。当然,没有义务这样做。稍后当您的声誉更高时,您也可以向上投票问题。感谢收听我的20秒so教程。:)我想对所有答案进行投票表决,但没有一个正确地解决了问题。正如我所说,我通过综合所有的想法,也通过纠正一些错误得到了答案。也许这也是我的错,因为我的辩护不是最好的,但我认为我不应该对错误的答案进行投票表决。谢谢你为投票人所做的解释请给我详细介绍一下