Regex 正则表达式能否读取用户指定的字符串?
使用regex是否可以获取两个用户指定字符串之间的内容? 我正在使用python。到目前为止,我发现:Regex 正则表达式能否读取用户指定的字符串?,regex,python-2.7,Regex,Python 2.7,使用regex是否可以获取两个用户指定字符串之间的内容? 我正在使用python。到目前为止,我发现: re.findall ( r'string1(.*?)string2', text, re.DOTALL) 但是这些字符串是否可以作为用户输入而不是固定输入读取。这可能吗? 如有任何建议,我们将不胜感激。 提前谢谢 只需使用字符串连接来构建搜索字符串/regex: string1 = "foo" string2 = "bar" re.findall(r'{}(.*?){}'.format(
re.findall ( r'string1(.*?)string2', text, re.DOTALL)
但是这些字符串是否可以作为用户输入而不是固定输入读取。这可能吗?
如有任何建议,我们将不胜感激。
提前谢谢 只需使用字符串连接来构建搜索字符串/regex:
string1 = "foo"
string2 = "bar"
re.findall(r'{}(.*?){}'.format(string1, string2), text, re.DOTALL)
Edit:我从@Kasramvd的答案中得到了灵感,因为
string.format
更干净,可以使用r
装饰进行正则表达式转义。根据用例的不同,您可能希望也可能不希望re.escape
字符串。您可以使用raw\u input()
获取字符串,并且(如果您不想添加任何正则表达式字符串)使用re.escape()
来转义字符串,以便转义正则表达式符号(可能存在于您的字符串中)
以下是我经常使用的方法:
import re
string1=raw_input()
string2=raw_input()
check=re.compile(r'%s(.*)%s'%(string1,string2),re.DOTALL)
check.findall()
希望这对你有所帮助。谢谢 为什么不呢?但在应用它们之前,你必须检查它们是否是正确的正则表达式模式。如果用户应该在输入字段中键入正则表达式模式,为什么要逃避呢?@WiktorStribiżew OP说的是用户指定的字符串而不是正则表达式,但另一方面,他指的是正则表达式,让我更新答案。这看起来很简单:)谢谢!
import re
string1=raw_input()
string2=raw_input()
check=re.compile(r'%s(.*)%s'%(string1,string2),re.DOTALL)
check.findall()