python - 如何传递正则表达式重复的参数(python)

标签 python regex repeat

我正在学习正则表达式。如果我想在一个字符串中找到所有 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/

相关文章:

python - 使用唯一键和所有相关值将列表列表转换为字典

javascript - 用于匹配部分单词的正则表达式 (JavaScript)

javascript - 短语的正则表达式(不仅仅是单词)

android - 每次按下按钮时重复声音

c# - 无论如何将命令绑定(bind)到 XAML/WPF/MVVM 中的用户控件中的按钮的所有实例

python - 在 python 中使用 "does not equal"的最佳方法是什么?

python - 如何实现 readinto() 方法

javascript - JS Regex - 匹配每个未转义的特定字符

java - 数组中的重复元素

python - Arduino与Python串口通信,使用十六进制值的问题