使用正则表达式我们可以获取两个用户指定字符串之间的内容吗? 我正在使用python。到目前为止,我发现:
re.findall ( r'string1(.*?)string2', text, re.DOTALL)
但是这些字符串可以作为用户输入读取而不是固定的字符串。这可能吗? 任何建议表示赞赏。 提前谢谢!
答案 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()
希望这会帮助你。谢谢!