我正在尝试了解正则表达式,并正在尝试一些示例,试图了解它的结果。我正在努力理解 OR (|) 中元素的顺序如何影响以下代码的输出
import re
uni = "University of Sheffield"
first = re.findall(".*U|S.*U|S",uni)
second = re.findall(".*U|S.*S|U",uni)
third = re.findall(".*S|U.*S|U",uni)
如果我打印第一个、第二个和第三个变量,我会得到以下结果
first -> ['U', 'S']
second -> ['U']
third -> ['University of S']
我不明白为什么每个的输出都是这样的。我认为它应该是相同的,并且应该是['University of S']。我想知道是否有人能帮助我理解为什么这 3 种情况的解释不同?
谢谢!
OR(|) 在第一个匹配处停止。 一旦匹配成功,在
.findall
: 期间仅检查剩余的字符串
第一种情况:
.*U
匹配 U
。U
之后的剩余字符串中,S
匹配。S
匹配后没有任何内容。第二种情况:
.*U
匹配 U
U
之后的剩余字符串中,三个 OR 情况都不匹配。第三种情况:
.*S
匹配 University of S
。