Python正则表达式匹配段落
我有一个字符串如下所示: 艺术。15个国家的经济增长率下降 阿尔蒂克尔第305条之二 (StGB),恐怖袭击的受害者是罪人 Artikel 260quinquies Absatz 1 StGB和Sicherstellung der Sorgfalt bei Finanzeschäften 艺术。22 Geltungsbereich 1号镀金:a。富尔 中间金融;B自然人和法律人,死吧 这是一个非常重要的项目 (亨德里宁和亨德勒) 我正试图把这根线从艺术中分割成几部分。XX到下一个艺术。XX 因此,例如,第一个匹配项应包含以下字符串: 艺术。15个国家的经济增长率下降 阿尔蒂克尔第305条之二 (StGB),恐怖袭击的受害者是罪人 Artikel 260quinquies Absatz 1 StGB和Sicherstellung der Sorgfalt bei Finanzeschäften 我试过这个:Python正则表达式匹配段落,python,regex,string,split,findall,Python,Regex,String,Split,Findall,我有一个字符串如下所示: 艺术。15个国家的经济增长率下降 阿尔蒂克尔第305条之二 (StGB),恐怖袭击的受害者是罪人 Artikel 260quinquies Absatz 1 StGB和Sicherstellung der Sorgfalt bei Finanzeschäften 艺术。22 Geltungsbereich 1号镀金:a。富尔 中间金融;B自然人和法律人,死吧 这是一个非常重要的项目 (亨德里宁和亨德勒) 我正试图把这根线从艺术中分割成几部分。XX到下一个艺术。XX
x = re.findall(r"Art\. (?s).*(?=Art)",text);
这是:
x = re.findall(r"Art\. .+(\n.*)*(?=Art)*",text);
但它似乎并不像预期的那样起作用。。。
另外,我也不确定我应该使用findall还是split。首先,在模式中使用捕获组并将其传递给
re.findall
时。其次,您不应该尝试量化环顾,它毫无意义,并且通常被视为用户错误<代码>(?=艺术)*在Python中这里将被视为没有(?=艺术)*
,因为它意味着“可以有艺术
,也可以没有艺术
”。就像没有前瞻一样
你可以用
result = re.findall(r'(?m)^Art\..*(?:\n(?!Art\.).*)*', text)
见
详细信息
-行的开始(?m)^
-Art\.
stringArt.
-行的其余部分*
-0行或更多行不以(?:\n(?!Art\).*)
Art开头。
r'(?m)^Art\+(?:\n(?!Art\).*)”
您所说的“输出中只会出现捕获”和“不尝试量化环顾”是什么意思?@simplesystems请参阅<代码>(?=艺术)*与无相同。