我正在尝试从以下行分隔的文本文件中过滤'abc','def \ nghj','klm'。
********
abc
********
def
ghj
********
klm
我试图逃避'\*'
字符并将其余字符分组(使用'.*?\*(.*)*.*'
这样的表达式),但没有运气。
任何帮助表示感谢,提前感谢..
答案 0 :(得分:0)
可以在多线模式下使用下面的内容
其中[*]{4}
代表分隔符。
# (?:^(?![*]{4}).*(?:\r?\n|$))+
(?:
^
(?! [*]{4} )
.*
(?: \r? \n | $ )
)+
输出:
** Grp 0 - ( pos 10 , len 5 )
abc
--------------------
** Grp 0 - ( pos 25 , len 10 )
def
ghj
---------------------
** Grp 0 - ( pos 45 , len 3 )
klm
答案 1 :(得分:0)
如果查找不包含星号符号的文本块,可以使用re.findall
和多行模式:
text = '''********
abc
********
def
ghj
********
klm
'''
re.findall(r'^[^*]+$', text, re.M)
或者,如果要查找按星号分隔的文本块,则应使用re.split
:
re.split(r'(?:^|\n)\*+(?:\n|$)', text, re.M)