我从网页中提取了1个长字符串。使用:
x=re.findall(r"(?:l'article)sd+w+.*;", xpath)
它提取以下2个字符串:
l'article 1382 du code civil ;
l'article 700 du code de procédure civile, les condamne à payer à la société Financière du cèdre la somme globale de 3 000 euros et rejette leurs demandes ;
但是,后一个有点长。我所需要的只是"。有没有办法直接这样做?因此,我原来的正则命令要寻找";"或基于它首先遇到的哪一个。
如果没有,我可以将REGEX应用于列表,还是为此写一个循环?
所需的结果列表:
l'article 1382 du code civil
l'article 700 du code de procédure civile
请注意,我必须将其应用于许多页面,并且页面中可能还有更多。无法手动或专门指示列表中的条目进行任何操作。
您似乎缺少未丢失的操作员?
的几件事,以便强迫正则判处在发现第一次发生后停止搜索。此外,您可以使用[]
检查多个字符(请参阅以下内容(。这将是新代码:
(?:l'article)sd+w+.*?[;,]
Regex101:
https://regex101.com/r/tyknhk/1
您可以经常简化正则义务:
-
(?:l'article)
->不需要非捕捉组,因此您可以将其删除 -
sd+w+
->w+
的检查似乎毫无意义(尤其是在没有字母的情况下与数字匹配(,因此我认为您可以将其删除。或者您缺少匹配的空间字符,例如1382 du
-
.*;
要将任何内容与,
或;
匹配,您可以简单地使用否定字符类,例如[^;,]*
,它将与所有不是其中之一匹配的所有内容。
所以您的最后一条正则可以是
l'articlesd+[^;,]*
或
l'articlesd+sw+[^;,]*