带有两个可能性的底带



我从网页中提取了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+[^;,]*

最新更新