我正在学习正则表达式。如果我想在一个字符串中找到所有 5 个字母的单词,我可以使用:
import re
text = 'The quick brown fox jumps over the lazy dog.'
print(re.findall(r"\b[a-zA-z]{5}\b", text))
但是我想写一个简单的函数,它的参数包括字符串和要找到的单词的长度。我试过这个:
import re
def findwords(text, n):
return re.findall(r"\b[a-zA-z]{n}\b", text)
print(findwords('The quick brown fox jumps over the lazy dog.', 5))
但这会返回一个空列表。 n
未被识别。
如何用重复次数(或在本例中为单词的长度)指定参数?
最佳答案
Python 不会神奇地将 n
的值填充到字符串中。为此,您需要使用 format
:
r"\b[a-zA-z]{{{}}}\b".format(n)
或者,如果您运行的是 Python >= 3.6,请使用新的 f-strings (可以与表示原始字符串的 r
前缀组合):
fr"\b[a-zA-z]{{{n}}}\b"
在这两种情况下,您都需要外部的两个 {{}}
来创建文字 {}
,内部的是格式占位符。
如果您想避免转义文字 {}
,您可以使用旧的 %
格式来实现相同的目的。因为这个 n
需要始终是一个整数(它在这里):
r"\b[a-zA-z]{%i}\b" % n
关于python - 如何传递正则表达式重复的参数(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393705/