特殊构造
(?:…) (…)不分组版本,用于使用 | 或者后接数量词
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头,可选多个
(?#…) #号后的内容将作为注释
(?=…) 之后的字符串内容需要匹配表达式才能成功匹配
(?!…) 之后的字符串不匹配表达式才能成功
(?(?(?(id/name) yes |no) 如果编号为id/名字为name的组匹配到字符串,则需要匹配yes,否则匹配no,no可以省略
“(?:…)” :()里面有?:表示该()不是分组
1 | >>> pat=re.compile(r'a(?:bc)') |
“(?=…)”:匹配…表达式,返回。对后进行匹配,总是对后面进行匹配
1 | >>> pat=re.compile(r'\w(?=\d)') #匹配表达式\d,返回数字的前一位,\w:单词字符[A-Za-z0-9] |
“(?!…)” 不匹配…表达式,返回。对后进行匹配
1 | >>> pat=re.compile(r'[A-Za-z]+(?!\d)') #[A-Za-z],匹配字母,可以用其他的正则方法 |
“(?<=…)”:匹配…表达式,总是对前面进行匹配
1 | >>> pat=re.compile(r'(?<=\d)[A-Za-z]+') #匹配前面是数字的字母 |
“(?<!…)”:不匹配…表达式,总是对前面进行匹配
1 | >>> pat=re.compile(r'(?<!\d)[A-Za-z]+') #匹配前面不是数字的字母 |
“(?i)…”: …为表达式,这里就介绍下i参数:大小写区分匹配
1 | >>> pat=re.compile(r'(?i)abc') #(?i) 不区分大小写 |