正则表达式可以读取用户指定的字符串?

时间:2016-04-05 15:14:47

标签: regex python-2.7

使用正则表达式我们可以获取两个用户指定字符串之间的内容吗? 我正在使用python。到目前为止,我发现:

re.findall ( r'string1(.*?)string2', text, re.DOTALL)

但是这些字符串可以作为用户输入读取而不是固定的字符串。这可能吗? 任何建议表示赞赏。 提前谢谢!

3 个答案:

答案 0 :(得分:2)

您可以使用raw_input()获取字符串,并且(如果要添加非正则表达式字符串)使用re.escape()转义字符串以转义正则表达式符号(可能存在于您的字符串中)

import re
string1 = re.escape(raw_input("enter first string: "))
string2 = re.escape(raw_input("enter second string: "))

re.findall(r"{}(.*?){}".format(string1, string2), text, re.DOTALL)

答案 1 :(得分:1)

只需使用字符串连接来构建搜索字符串/正则表达式:

foreach (IBook book in library.OfType<ProgrammingBook>())
{
    // ....
}

编辑:我从@ Kasramvd的答案中获取灵感,因为string1 = "foo" string2 = "bar" re.findall(r'{}(.*?){}'.format(string1, string2), text, re.DOTALL) 更清晰,并且您可以使用string.format装饰进行正则表达式转义。根据用例,您可能会或可能不想r字符串。

答案 2 :(得分:0)

以下是我一直使用的方式:

import re
string1=raw_input()
string2=raw_input()
check=re.compile(r'%s(.*)%s'%(string1,string2),re.DOTALL)
check.findall()

希望这会帮助你。谢谢!