正则表达式模式中的Python字符串变量本身

正则表达式模式中的Python字符串变量本身,python,regex,string,Python,Regex,String,是否可以在正则表达式模式中包含字符串变量本身 text="Sample text is" st="text" r=re.findall("[A-Z]+[st]+",text) print(r[:]) ResOn是我需要循环中的正则表达式模式,所以st字符串变量将不会固定,并且会发生变化,所以我不能将正则表达式模式写成“文本”。还是不可能?谢谢 您可以构造正则表达式,如下所示 pattern = re.compile(r"[A-Z]+({})+".format(st)) re.findall(p

是否可以在正则表达式模式中包含字符串变量本身

text="Sample text is"
st="text"
r=re.findall("[A-Z]+[st]+",text)
print(r[:])

ResOn是我需要循环中的正则表达式模式,所以st字符串变量将不会固定,并且会发生变化,所以我不能将正则表达式模式写成“文本”。还是不可能?谢谢

您可以构造正则表达式,如下所示

pattern = re.compile(r"[A-Z]+({})+".format(st))
re.findall(pattern, text)
print pattern.pattern
if st in text:
您可以检查创建的模式,如下所示

pattern = re.compile(r"[A-Z]+({})+".format(st))
re.findall(pattern, text)
print pattern.pattern
if st in text:
在上述表达式中,
st
中的值将替换为
{}
。你可以阅读更多关于它的内容

请注意,我已将
[st]
更改为
(st)
,因为
[st]
将匹配单词
st
中的任何字符。如果您想匹配实际单词,那么您可能希望像我所展示的那样对其进行分组

但是,如果您要做的只是检查一个字符串是否存在于另一个字符串中,那么您可以使用
in
操作符,如下所示

pattern = re.compile(r"[A-Z]+({})+".format(st))
re.findall(pattern, text)
print pattern.pattern
if st in text:
你为什么不:

>>> text="Sample text is"
>>> st="text"
>>> if st in text:
...     print('Success')

只需连接regexp字符串

import re
pattern1 = "[A-Z]"
pattern2 = "text"
pattern = pattern1 + pattern2

text = "Sample Atext is Ztext"
r = re.findall(pattern, text)
print(r[:])
#['Atext', 'Ztext']
请注意,我正在转义文本