我有一个文字:
type: some_type
text text text text
more text more text more text
abcd abcd qwerty
mode some_mode
所以,我可以在第一行匹配:"^[ \\t]+type: some_type"
。现在,我需要写regex
以匹配type
和mode
,它们可以由任意数量的文本行分隔。
我该怎么做?感谢。
答案 0 :(得分:1)
您可以使用
^type:\ some_type # search type: at the beginning of the line
.*? # anything else afterwards, lazily
^mode\ some_mode # search mode at the beginning of the line
使用MULTILINE
,VEROSE
和DOTALL
模式,请参阅a demo on regex101.com。
Python
中,这将是:
import re
rx = re.compile(r'''
^type:\ some_type
.*?
^mode\ some_mode''', re.VERBOSE | re.MULTILINE | re.DOTALL)
string = """
type: some_type
text text text text
more text more text more text
abcd abcd qwerty
mode some_mode
type: some_other_type
text text text text
more text more text more text
abcd abcd qwerty
mode some_mode
type: some_type
text text text text
more text more text more text
abcd abcd qwerty
mode some_other_mode
"""
print(rx.findall(string))
这显然可以放在一个函数中,类型和/或模式作为要搜索的参数。
答案 1 :(得分:0)
对于模式和类型的条件,逐行循环可能更有意义。请参阅下面的伪代码
for line in lines:
if type regex:
do something
elif mode regex
do something else