Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式匹配段落_Python_Regex_String_Split_Findall - Fatal编程技术网

Python正则表达式匹配段落

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

我有一个字符串如下所示:

艺术。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

我试过这个:

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\.
    -
    Art.
    string
  • *
    -行的其余部分
  • (?:\n(?!Art\).*)
    -0行或更多行不以
    Art开头。
尝试
r'(?m)^Art\+(?:\n(?!Art\).*)”
您所说的“输出中只会出现捕获”和“不尝试量化环顾”是什么意思?@simplesystems请参阅<代码>(?=艺术)*与无相同。