Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
如何在python中使用re模块匹配模式之间的行_Python_Regex - Fatal编程技术网

如何在python中使用re模块匹配模式之间的行

如何在python中使用re模块匹配模式之间的行,python,regex,Python,Regex,我有一个字符串(包含多行),其中包含以下内容: "Name=My name Address=...... \##### To extract from here #### line 1 line 2 line 3 \##### To extract till here #### close" \##### To extract from here #### line 1 line 2 line 3 如何提取“#####之间的行以提取*”字符串,包括模式 输出应如下所示: "Name=My n

我有一个字符串(包含多行),其中包含以下内容:

"Name=My name
Address=......
\##### To extract from here ####
line 1
line 2
line 3
\##### To extract till here ####
close"
\##### To extract from here ####
line 1
line 2
line 3
如何提取
“#####之间的行以提取*”
字符串,包括模式

输出应如下所示:

"Name=My name
Address=......
\##### To extract from here ####
line 1
line 2
line 3
\##### To extract till here ####
close"
\##### To extract from here ####
line 1
line 2
line 3

你不需要正则表达式,一个简单的表达式就足够了

只需找到两个字符串,并输出它们之间的输入部分(通过切片字符串),注意避免输出第一个字符串(即记录其长度)


或者,您可以使用两个调用。

您不需要正则表达式,一个简单的调用就足够了

只需找到两个字符串,并输出它们之间的输入部分(通过切片字符串),注意避免输出第一个字符串(即记录其长度)


或者,您可以使用两个调用来调用。Ofir是正确的。下面是一个相应的示例:

>>> s = """... your example string ..."""
>>> marker1 = "\##### To extract from here ####"
>>> marker2 = "\##### To extract till here ####"
>>> a = s.find(marker1)
>>> b = s.find(marker2, a + len(marker1))
>>> print s[a:b]
\##### To extract from here ####
line 1
line 2
line 3

奥菲尔是对的。下面是一个相应的示例:

>>> s = """... your example string ..."""
>>> marker1 = "\##### To extract from here ####"
>>> marker2 = "\##### To extract till here ####"
>>> a = s.find(marker1)
>>> b = s.find(marker2, a + len(marker1))
>>> print s[a:b]
\##### To extract from here ####
line 1
line 2
line 3


如果在
行之前有一行“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。你需要写
b=b=b=C.b=C.b=C.b=C.b=C.b=C.C.C.C.b.b=C.b=C.b=C.C.a+32)
+1因为这也是一个很好的解决方案,因为它也是一个很好的解决方案,因为,find()是一个非常快的函数,而且regex是绝对不总是必要的,如果有一条线的话,如果有一条线的话,如果有一条线<<代码<<代码<<代码<<代码><代码>的话,<代码>的话,那么所有绝对不总是绝对不总是绝对必要的必要的话,而不是绝对总是绝对总是必要的。如果有一个必要的话,如果有一条线的话,如果有一条线的话,<代码<<代码<<<代码><代码><代码><代码>的话,<代码>的话,<代码>代码>的话,##########“
,这个代码不会给出正确的东西。所以你需要写
b=ch.find(“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。但没有任何反斜杠的模式。@Sandhya如果你写的是
你写的是
Sandhya如果你写的是
Sandhya如果你写的是你写的是
Sandhya如果你写的是
Sandhya如果你写的是没有任何反斜杠的模式。@sandhhya如果你写的是Sandhya.Sandhya如果你写的是r''35基基基基本切切切切切切切切切切切亚(r)从从这里提取,从从这里提取从这里提取从这里提取从这里提取,从这里提取从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里,从这里提取,从这里提取,从这里,从这里提取,从这里提取,从这里提取,从这里,从这里,从这里提取,从这里,从这里提取,从支付支付支付支付支付支付支付支付支付支付支付支付,从#####
。这仍然很好。相反,如果你写
。(?=############“
”,反斜杠字符将被捕获到
“.*”
部分。据我所知,这不是您想要的。+1此解决方案可能比使用
str.find()慢一点
,然而,实际上,这仅在搜索字符串非常大或提取多次时才相关。正则表达式的优点是它们在检测提取标记时更灵活。非常感谢这项工作。但是模式中没有任何反斜杠。@Sandhya如果您编写
重新编译从这里提取。从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取。从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,从这里提取,而不是在<代码>上,而不是在<代码>上,而不是在<代码>上,而不是在<代码>上,比赛将从<代码>开始,从<代码>开始,从<代码>开始,从<代码>开始,从<代码>开始,从<代码>开始,从>开始,从>开始,从>开始,从>开始,从从>开始,从>开始,从>开始,从>开始,从>开始,从>开始,从>开始,从从>开始,从>开始,从>开始,从从>开始,从>开始,从>开始,从>开始,从,从>开始,从,从>开始,从,从从>从它仍然很好。相反,如果你写
”(?=#########提取到这里)“
”,反斜杠字符将被捕获到
“.*”
部分。据我所知,这不是您想要的。+1此解决方案可能比使用
str.find()慢一点
,然而,在实践中,这仅在搜索字符串非常大或提取多次时才相关。正则表达式的优点是它们在检测提取标记时更灵活。