我从网页中提取了一个长字符串。使用:
x=re.findall(r"(?:l'article)\s\d+\w+.*;", xpath)
它提取了以下两个字符串:
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命令根据它首先遇到的命令查找“;”或“,”。你知道吗
如果没有,我可以将regex应用到一个列表中,还是需要为此编写一个循环?你知道吗
所需结果列表:
l'article 1382 du code civil
l'article 700 du code de procédure civile
请注意,我必须将此应用于许多页面,而且一个页面中可能会有更多这样的页面。用手或在列表中明确指出条目来做任何事情都是不可能的。你知道吗
你可以简化你的正则表达式很多:
(?:l'article)
->;不需要非捕获组,因此可以将其删除\s\d+\w+
->;对\w+
的检查似乎毫无意义(特别是当它匹配没有字母的数字时),因此我认为可以删除它。或者缺少要匹配的空格字符,例如1382 du
.*;
要匹配任何高达,
或;
的字符,您可以简单地使用一个否定字符类,比如[^;,]*
,它将匹配所有不属于这些字符的字符。你知道吗所以你最后的正则表达式可以是
或者
您似乎缺少ungreedy操作符
?
,以便强制regex在找到第一个匹配项后停止搜索。另外,您可以使用[]
检查多个字符(请参阅以下内容)。新代码如下:正则表达式101:
https://regex101.com/r/tYkNHK/1
相关问题 更多 >
编程相关推荐