我正在尝试提取 txt 文件的章节/部分,这些文件是使用葡萄牙诉讼文档上的 pdftotext 生成的。 最初,我尝试使用这个正则表达式,至少获得每个章节的标题:
^[A-Z\s\d\W]+$
显然它适用于此示例:https://regex101.com/r/FQKsy4/1
但是,对于这个:https://regex101.com/r/BEO55p/3
我得到了一些非标题,例如那些比赛:
那么,我怎样才能不仅获得每个章节的标题,而且还获得它们的每个内容?
我尝试使用正则表达式来获取每一章及其内容,但在某些文档中效果不佳
最佳答案
使用 2 个捕获组的方法:
^[^\S\n]*([A-Z][^a-z]*)((?:\n(?![^\S\n]*[A-Z][^a-z\n]*$).*)*)$
^
字符串开头[^\S\n]*
匹配可选空格,不带换行符(
捕获组 1[A-Z][^a-z]*
匹配单个大写字符,后跟除小写 a-z 之外的任何字符
)
关闭群组(
捕获组 2(?:\n(?![^\S\n]*[A-Z][^a-z\n]*$).*)*
可选择重复匹配所有不匹配的行从类似标题的模式开始
)
关闭群组$
字符串结尾
更像 PCRE 的方法:
^\h*([A-Z][^a-z]*)((?>\R(?!\h*[A-Z][^a-z\r\n]*$).*)*)$
关于正则表达式获取大写章节标题之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74853570/