[英]regular expression: match anything between specific pattern
我试图提出一个与特定模式匹配的正则表达式,通过该正则表达式可以排列文本文件中的文章。 (注意:“ |”表示段落标记/换行符,而“。”表示一些非单词字符。)这是模式
|
...........................Dokument.1.von.55|
|
|
|
..........................Some newspaper|
|
..........................Freitag 08. Mai 2015
|
sometextsometextsometextsometextsometextsometextsometextsometextsometextsometext
sometextsometextsometextsometextsometextsometextsometextsometextsometextsometext
(etc..)
|
METAINFO1: IWOIOWIEOWEIWOEIWEO
|
(etc... possibly more metainfo all capitalized)
|
|
.........................Copyright 2015 some publisher notes
.........................at most one more single line containing copyright information
.........................Alle Rechte vorbehalten|
# note: last line alternatively: All Rights Reserved
|
(next pattern i.e. article)
(出于版权目的,我不得不将其匿名化)
我创建了以下正则表达式来提取单个文章:
^[\\r\\n]
[\\W]+Dokument \\d{1,} von \\d{1,}
[\\r\\n]+
[\\w\\W]+
[r\\n]
[\\W]+(Alle Rechte vorbehalten|All Rights Reserved)
$
因此,整个RE为^[\\r\\n][\\W]+Dokument \\d{1,} von \\d{1,}[\\r\\n]+[\\w\\W]+[\\r\\n][\\W]+(Alle Rechte vorbehalten|All Rights Reserved)$
我已经用Textpad测试过了。 当我使用RE进行向后搜索时,它会匹配任何单个文章(根据需要)。 但是,当我进行正向搜索时,它会匹配整个文档。
起初,我认为它与任何文章都匹配,然后看起来好像是否与所有内容都匹配。 但是后来我尝试了replace选项,结果是我的测试术语只被替换了一次。
因此,可再生能源不履行职责。 我已经为此工作了一段时间,但找不到我的错误。
我做错了什么? -我的RE有错误吗?
我打算匹配文章,将工作中的RE变成一个捕获组,然后将其替换为一些xml。 但是我被困在这里。
干杯,安德鲁
诀窍是使与文章正文匹配的部分不贪心 ,并为文章明确定义开始和结束匹配。
re.compile(r'^\n\W+Dokument.+?\n\W+Copyright[^\n]+\n(?:[^\n]+\n)?', flags=re.S)
仅重申一下假设:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.