【问题标题】:Regex substring one mismatch in any location of string正则表达式子字符串在字符串的任何位置出现一个不匹配
【发布时间】:2015-09-30 14:18:00
【问题描述】:

谁能解释一下为什么下面的代码返回一个空列表:

>>> import re
>>> m = re.findall("(SS){e<=1}", "PSSZ")
>>> m
[]

我试图在PSSZ 中查找SS 的出现总数(并结合最多一个不匹配 的可能性)。

我在这里看到了一个类似的代码示例:Search for string allowing for one mismatch in any location of the string

【问题讨论】:

    标签: python pattern-matching string-matching


    【解决方案1】:

    您需要删除范围限定符内的e&lt;= 字符。范围量词必须是 ,

    • {n} 。重复上一个令牌n 的次数。
    • {min,max} 从 min 到 max 次重复上一个令牌。

    会的,

    m = re.findall("(SS){1}", "PSSZ")
    

    m = re.findall(r'SS','PSSZ')
    

    更新:

    >>> re.findall(r'(?=(S.|.S))', 'PSSZ')
    ['PS', 'SS', 'SZ']
    

    【讨论】:

    • 这只给出SS(一个实例),而不是PSSZ,其中有一个不匹配。
    • @warship ..你不是问SS的出现次数吗?
    • 它也应该返回SS。希望使用像 {1} 符号这样简单的东西,这会更加优雅。
    • 谢谢,很有趣。我认为这是最简洁的方法。您将如何处理诸如SSZ 之类的三重字符串,正则表达式符号会改变吗?也许您可以发布更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多