【问题标题】:Python: regex a string with a wildcard in itPython:正则表达式中带有通配符的字符串
【发布时间】:2013-04-07 21:20:58
【问题描述】:

我想做的是允许用户输入诸如:“Torsion ? Group”、通配符和所有(通配符是一个完整的单词)之类的内容,并根据是否找到返回 true 或 false。那么我会有诸如 \b*\b 之类的东西吗? Python 手册说 \bfoo\b 将匹配 "something foo something else" 和 "foo." 形式的字符串。我遇到的问题是我什至试图开始简单地修改我发现的另一个示例:

inputstring = 'What is a Torsion Abelian Group (TAB)?' 
str1 = "Abelian"
output = re.search("Torsion" + \bstr1\b + "Group", inputstring)
print output

但是我得到了输出:

output = re.search("Torsion" + \bstr1\b + "Group", inputstring)
                                ^
SyntaxError: unexpected character after line continuation character

因此,我很难找到已知字符串,更不用说通配符了。任何关于任何一个的想法都将非常感激。

谢谢,

布赖恩

【问题讨论】:

    标签: python full-text-search escaping wildcard


    【解决方案1】:

    Python 不知道如何处理你的两个\b,并假设你有一个名为\bstr1\b 的变量,而不是str1。您需要将\bstr1 分开,并将正则表达式语法用引号括起来或删除它们。您还应该仔细检查 here 以确保 \b 是您应该使用的语法。

    output = re.search("Torsion " + str1 + " Group", inputstring)
    

    或清洁剂

    output = re.search("Torsion %s Group" % str1, inputstring)
    

    这是完整的代码:

    inputstring = 'What is a Torsion Abelian Group (TAB)?'
    str1 = "Abelian"
    output = re.search("Torsion %s Group" % str1, inputstring)
    if output:
        print str(output.group(0))
    

    并返回以下输出:

    Torsion Abelian Group
    

    【讨论】:

    • 感谢安德森。您提出的第一个解决方案,即删除 \b 的返回 <_sre.sre_match object at> 我猜这是一个参考?如果是这样,您知道如何在该位置拉物体吗?第二个解决方案有效,我想我理解它是如何工作的 - 它非常简单,因为 %s 正在被 str1 取代。至于您提供的 /b 语法和链接(很好的链接,谢谢),它看起来应该可以工作,因为据说它“只匹配整个单词”。我不知道为什么我上面的例子不起作用。请注意错误 ^ 最初不是指向 /b 而是 )
    • 您是否希望正则表达式匹配字符串的一部分,但如果匹配则返回整个字符串?至于回报,那确实是参考。看看完整的例子。我遇到了与 \b 相同的问题,不确定这是由 python 问题引起的,还是我们不了解正则表达式。
    • 但是问题真的归结为当您找到匹配项时您希望从正则表达式返回什么。
    猜你喜欢
    • 2021-02-05
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2020-11-29
    • 2011-11-28
    • 1970-01-01
    • 2016-08-08
    相关资源
    最近更新 更多