1. ‘?’
1.1
0-1 个字符
1.2 放在末尾,两个对等字符之间
对等字符:
所有称得上是括号的字符:左右对称
所有非括号字符: 自对称
最小对等字符匹配
比如<.*?>匹配下文
<<h1>title<h1>>
最小结果只有<h1> <h2>
顺带地,当有多个匹配结果时,
m=re.search(...)
m.group(N) 返回第N组括号匹配的字符。(只需要一组结果时,用m.group(1)即可)
m.group() == m.group(0) == 所有匹配的字符 !!
m.groups() == (m.group(1), m.group(2), ...)
注意匹配的组数由模式决定!!
m=re.search('[a-z](.*b)(.*c)','abcd')
有两个(...),所以匹配模式是2
即:m.group(): ('b','c')
m.group(0) 'abc'
m.group(1) 'b'
m.group(2) 'c'
2 模式匹配
(?<= ... ) 前约束
(?= ) 后约束
例如 (?<=abc)[a-z]{3}(?=ghi)
匹配 abcdefghi
结果 def