正则表达式:如何将此文本捕获为两个匹配?

时间:2015-03-20 02:23:31

标签: python regex

这是要提取的文字。

A=1
>a=1

>b=2

>if a==b:
>   print "same"
>else: print "not same"

Z=1 
F=FUNCTION_Z(1234)

>x=1
>y=2

>z=1

我尝试将这样的文字提取为两个匹配。

>a=1

>b=2

>if a==b:
>   print "same"
>else: print "not same"

>x=1
>y=2

>z=1

我试过了"(([\>].*?[\r\n])[\r\n]+)*",但它没有用。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

以下正则表达式将从以^开头的行到不以>开头的行(不包括空行)进行匹配。

>>> import re
>>> s = '''A=1
>a=1

>b=2

>if a==b:
>   print "same"
>else: print "not same"

Z=1 
F=FUNCTION_Z(1234)

>x=1
>y=2

>z=1'''
>>> re.findall(r'(?m)^>(?:.*)(?:[\r\n]+>.*)*', s)
['>a=1\n\n>b=2\n\n>if a==b:\n>   print "same"\n>else: print "not same"', '>x=1\n>y=2\n\n>z=1']

DEMO

答案 1 :(得分:0)

我自己解决了这个问题。 我的解决方案是"([>]。?[\ r \ n])[\ r \ n] ([>]。?[\ r \ n] )"

相关问题