[英]Python String variable itself in Regex pattern
是否可以在Regex模式中包含字符串变量?
text="Sample text is"
st="text"
r=re.findall("[A-Z]+[st]+",text)
print(r[:])
Resaon是我需要循环中的正则表达式模式,所以st字符串变量将不会被修改并且将会改变,因此我不能将正则表达式模式写为“text”。 还是不可能? 谢谢!
您可以像这样构造正则表达式
pattern = re.compile(r"[A-Z]+({})+".format(st))
re.findall(pattern, text)
您可以像这样检查创建的模式
print pattern.pattern
在上面的表达式中, st
的值将替换为{}
。 你可以在这里阅读更多相关信息
请注意,我已将[st]
更改为(st)
,因为[st]
将匹配单词st
中的任何字符。 如果你想匹配实际的单词,那么你可能想要像我展示的那样对它进行分组。
但是,如果你要做的就是检查另一个字符串是否存在,那么你可以使用in
运算符,就像这样
if st in text:
Python 2.7.5+ (default, Sep 19 2013, 13:48:49)
>>> import re
>>> text = "Sample text is"
>>> st = "text"
>>> r = re.findall(r"[A-Z]+[%s]+" % re.escape(st), text)
>>> print(r[:])
[]
请注意,我正在逃避文本。
你为什么不这样做:
>>> text="Sample text is"
>>> st="text"
>>> if st in text:
... print('Success')
只是连接正则表达式字符串。
import re
pattern1 = "[A-Z]"
pattern2 = "text"
pattern = pattern1 + pattern2
text = "Sample Atext is Ztext"
r = re.findall(pattern, text)
print(r[:])
#['Atext', 'Ztext']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.