繁体   English   中英

Python字符串变量本身在Regex模式中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM