的第一个参数是正则表达式,第二个参数是要匹配的字符串:re.match()
import re pattern = r"123" string = "123zzb" re.match(pattern, string) # Out: <_sre.SRE_Match object; span=(0, 3), match='123'> match = re.match(pattern, string) match.group() # 出:'123'
您可能会注意到pattern变量是一个前缀为的字符串r,它表示该字符串是原始字符串文字。
原始字符串文字的语法与字符串文字稍有不同,即\,原始字符串文字中的反斜杠表示“只是反斜杠”,无需加倍反斜杠即可转义“转义符”,例如换行符(\n),制表符(\t),退格键(),换页(\)\r等。在普通的字符串文字中,每个反斜杠必须加倍,以避免被当作转义序列的开始。
因此,r"\n"是2个字符的字符串:\和n。正则表达式模式也使用反斜杠,例如,\d指任何数字字符。"\\d"通过使用原始字符串(r"\d"),我们可以避免不得不对字符串()进行两次转义。
例如:
string = "\\t123zzb" # 这里的反斜杠被转义了,所以没有制表符,只有'\'和't' pattern = "\\t123" # 这将匹配\ t(转义反斜杠),后跟123 re.match(pattern, string).group() # 没有匹配 re.match(pattern, "\t123zzb").group() # 匹配“ \ t123” pattern = r"\\t123" re.match(pattern, string).group() # 匹配“ \\ t123”
匹配仅从字符串的开头开始。如果要在任何地方匹配,请re.search改用:
match = re.match(r"(123)", "a123zzb") match is None # 出:真 match = re.search(r"(123)", "a123zzb") match.group() # 出:'123'