【问题标题】:Python 3, regex repetition and str.format() - what's the right way?Python 3,正则表达式重复和 str.format() - 什么是正确的方法?
【发布时间】:2012-07-01 21:52:58
【问题描述】:

我想根据变量的值进行正则表达式搜索。

在 Py2.x 中这很好用:

pattern = re.compile(r"\b[a-zA-Z]{%(min_length)d,}\b" % locals())

当我尝试将其移植到新的 str.format() 表示法时,我得到如下信息:

pattern = re.compile(r"\b[a-zA-Z]{{0},}\b".format(min_length))

这给了我一个错误,因为重复的大括号与 str.format() 的大括号混淆:

ValueError: Single '}' encountered in format string

我相信你能想到更多这样的例子,其中 format() 与重复发生冲突。

通过 str.format() 为正则表达式的重复提供外部值的正确方法是什么? % 运算符在 Py3 中不起作用。

【问题讨论】:

    标签: regex string python-3.x format repeat


    【解决方案1】:

    只需使用旧版本 - Python 3.x 仍支持% 字符串格式,并且不会消失。如果您坚持使用新语法,请将不表示字段的大括号加倍:

    pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length))
    

    【讨论】:

    • 谢谢。首先,我遇到了 % 表示法的语法错误。现在它工作正常;)感谢双括号的提示!
    猜你喜欢
    • 2010-12-24
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2014-08-01
    相关资源
    最近更新 更多