Python正则表达式或'|'操作员内部工作

时间:2019-04-02 08:56:16

标签: python regex

根据文档here

  

'|'

     

A|B(其中A和B可以是任意RE)创建了一个常规   匹配A或B的表达式。任意数量的RE   可以用'|'分隔。可以在里面使用   组(请参见下文)。扫描目标字符串时,RE   由'|'分隔的字符从左到右尝试。当一种模式   完全匹配,则该分支被接受。这意味着一旦A   匹配,即使B会产生A,也不会对其进行进一步测试   整体比赛更长。换句话说,'|'操作符从不   贪婪。要匹配文字'|',请使用\|,或将其括在   字符类,例如[|]

因此,我尝试了此操作并获得了预期的结果。我的正则表达式A(a。* b)找到匹配项,因此正则表达式B(b。* e)不在结果中(尽管它将产生更长的匹配项)。

>> re.findall('a.*b|b.*e', 'abcdef')
>> ['ab']

但是,这如何工作?即使正则表达式A(b。* d)可以找到匹配项,但正则表达式B(a。* e)的结果仍在输出中。

>> re.findall('b.*d|a.*e', 'abcdef')
>> ['abcde']

这里,我不是在尝试使用正则表达式解析任何字符串,而是试图了解正则表达式的工作原理。因此,没有预期的输出或样本输出。

0 个答案:

没有答案