我想在正则表达式中使用一个变量,我如何在Python中做到这一点?
TEXTO = sys.argv[1]
if re.search(r"\b(?=\w)TEXTO\b(?!\w)", subject, re.IGNORECASE):
# Successful match
else:
# Match attempt failed
我想在正则表达式中使用一个变量,我如何在Python中做到这一点?
TEXTO = sys.argv[1]
if re.search(r"\b(?=\w)TEXTO\b(?!\w)", subject, re.IGNORECASE):
# Successful match
else:
# Match attempt failed
当前回答
你必须以字符串的形式构建正则表达式:
TEXTO = sys.argv[1]
my_regex = r"\b(?=\w)" + re.escape(TEXTO) + r"\b(?!\w)"
if re.search(my_regex, subject, re.IGNORECASE):
etc.
注意re.escape的使用,这样如果你的文本有特殊字符,它们就不会被这样解释。
其他回答
你必须以字符串的形式构建正则表达式:
TEXTO = sys.argv[1]
my_regex = r"\b(?=\w)" + re.escape(TEXTO) + r"\b(?!\w)"
if re.search(my_regex, subject, re.IGNORECASE):
etc.
注意re.escape的使用,这样如果你的文本有特殊字符,它们就不会被这样解释。
下面是你可以使用的另一种格式(在python 3.7上测试)
regex_str = r'\b(?< \ \w)%s\b(
我发现当你不能使用{}变量(这里替换为%s)时,它很有用。
你可以尝试使用格式语法sugarer的另一种用法:
re_genre = r'{}'.format(your_variable)
regex_pattern = re.compile(re_genre)
更多的例子
我有config。yml 使用流文件
"pattern":
- _(\d{14})_
"datetime_string":
- "%m%d%Y%H%M%f"
我使用的python代码
data_time_real_file=re.findall(r""+flows[flow]["pattern"][0]+"", latest_file)
你也可以使用format关键字。Format方法会将{}占位符替换为您传递给Format方法作为参数的变量。
if re.search(r"\b(?=\w)**{}**\b(?!\w)".**format(TEXTO)**, subject, re.IGNORECASE):
# Successful match**strong text**
else:
# Match attempt failed