import re
line = "dogs are better than humans"
matchObj = re.match( r'(.*) are (.*?) .*', line)
if matchObj:
print ("matchObj.group() : ", matchObj.group())
答案 0 :(得分:1)
(.*)
:多次匹配并捕获任何字符(换行符除外)。这可能是零次。 .
表示“任何字符”,*
表示重复。括号用于表示捕获组(如下所述)。
are
:文字字符串“为”
(.*?)
:与(.*)
相同,只是它尝试匹配的字符越少越好(非贪婪)。这意味着它将尝试尽快停止匹配。如果您的字符串在(.*?)
之后包含多个空格,则表达式的这一部分将匹配所有这些空格。添加非贪婪符号(?
)将使其停在第一个空格处(因为它是表达式此段之后的字符)。
.*
任意字符多次。
捕获组或简称捕获是整个比赛的一部分。在正则表达式中包装一个表达式可以使您轻松检索匹配的那部分。
({dogs
)are
(better
)
than humans
(.*)
are
(.*?)
.*
在您的示例中,将捕获dogs
和better
。这些也称为“组”。在正则表达式中,它们用一对括号标记。
使用正则表达式here。将鼠标悬停在比赛上以查看捕获了表达式的哪些部分。