Python 如何使用正则表达式根据模式将大文档分解为小文档?
大文档由小文档组成,小文档之间用“1435个文档中的1个”这样的模式分隔。我想把它分解成1435个小文档Python 如何使用正则表达式根据模式将大文档分解为小文档?,python,regex,Python,Regex,大文档由小文档组成,小文档之间用“1435个文档中的1个”这样的模式分隔。我想把它分解成1435个小文档 re_1 = r"\d{1,4} of \d{1,4} DOCUMENTS.+?" re_2 = r"\d{1,4} of \d{1,4} DOCUMENTS.+" re_1只给我“1435份文件中的1份”等。 re_2给了我整个文件 如果有办法使用re.findall和适当的正则表达式? 或者我必须重新拆分(这在这种情况下最容易),或者在每一行上循环检查模式?谢谢大家! 1 o
re_1 = r"\d{1,4} of \d{1,4} DOCUMENTS.+?"
re_2 = r"\d{1,4} of \d{1,4} DOCUMENTS.+"
re_1只给我“1435份文件中的1份”等。
re_2给了我整个文件
如果有办法使用re.findall和适当的正则表达式?
或者我必须重新拆分(这在这种情况下最容易),或者在每一行上循环检查模式?谢谢大家!
1 of 1435 DOCUMENTS
blabla (multiple lines)
2 of 1435 DOCUMENTS
blabla(multiple lines)
3 of 1435 DOCUMENTS
blabla(multiple lines)
4 of 1435 DOCUMENTS
blabla(multiple lines)
5 of 1435 DOCUMENTS
....
对于Python 3.7之前的早期版本,您可以将
re.findall
与
r'(?sm)^\d{1,4} of \d{1,4} DOCUMENTS.*?(?=^\d{1,4} of \d{1,4} DOCUMENTS|\Z)'
见
详细信息
-(?sm)
和re.M
上的选项re.S
-行首^
-1到4个数字,空格,\d{1,4}个\d{1,4}文档
,空格,1到4个数字,空格和的
子字符串文档
-任意0个或更多字符,尽可能少到最接近的字符数*?
-(?=^\d{1,4}个{1,4}文档|\Z)
模式或(^\d{1,4}个{1,4}文档
)字符串的结尾(
)\Z
re.split
可以使用零长度匹配进行分割
r'(?m)(?!\A)(?=^\d{1,4} of \d{1,4} DOCUMENTS)'
看
详细信息
-(?m)
选项已打开re.m
-不在字符串开头 -(?!\A)
-右边必须有一行开头,1到4位,空格,(?=^\d{1,4}of\d{1,4}文档)
,空格,1到4位,空格和
子字符串文档
re.split(r'(?!\A)(?=^\d{1,4} of \d{1,4} DOCUMENTS)', text, flags=re.M)
您可以在Python 3.7中使用
re.split(r'(?!\A)(?=^\d{1,4}of\d{1,4}文档),text,flags=re.M)
。非常感谢。
re.split(r'(?!\A)(?=^\d{1,4} of \d{1,4} DOCUMENTS)', text, flags=re.M)