Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式能否读取用户指定的字符串?_Regex_Python 2.7 - Fatal编程技术网

Regex 正则表达式能否读取用户指定的字符串?

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(

使用regex是否可以获取两个用户指定字符串之间的内容? 我正在使用python。到目前为止,我发现:

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()