Python匹配字符串的开头

示例

的第一个参数是正则表达式,第二个参数是要匹配的字符串: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'