1

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

在 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 中不起作用。

4

1 回答 1

6

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

pattern = re.compile(r"\b[a-zA-Z]{{{0},}}\b".format(min_length))
于 2012-07-01T22:00:43.323 回答