我可以在 Python 的正则表达式中使用变量而不是常量吗?
Posted
技术标签:
【中文标题】我可以在 Python 的正则表达式中使用变量而不是常量吗?【英文标题】:Can I use a variable instead of a constant in a regular expression in Python [duplicate] 【发布时间】:2021-05-19 07:49:01 【问题描述】:是否可以在正则表达式中使用变量,如下所示?
target = ["New York", "the most"]
regex = r"((?:\w+\W+)3)(?=New York((?:\W+\w+)3))"
test_str = "The City of New York often called New York City or simply New York is the most populous city in the " \
"United States. With an estimated 2016 population of 8537673 distributed over a land area of about 3026" \
"square miles (784 km2) New York City is also the most densely populated major city in the United States."
matches = re.finditer(regex, test_str)
for match in matches:
print(re.sub(r'\W+', ' ', match.group(1))+" <------>" +re.sub(r'\W+', ' ', match.group(2)))
re.sub(r'\W+', '', match.group(1))
理想情况下,我希望它遍历上面“目标”列表中的每个元素并提取短语的左右三个单词,这段代码会这样做,但前提是搜索词是正则表达式中的常量.
提前致谢
【问题讨论】:
【参考方案1】:您可以使用 f 字符串:
for phrase in target:
regex = rf"((?:\w+\W+)3)(?=phrase((?:\W+\w+)3))"
【讨论】:
你必须转义正则表达式量词***.com/a/64403025/13144143上的花括号 @n1colas.m 喜欢吗? 是的。否则替换将只是 3...\W+)3)(?...
。
代码编译但不产生任何输出。以上是关于我可以在 Python 的正则表达式中使用变量而不是常量吗?的主要内容,如果未能解决你的问题,请参考以下文章