文本匹配通过特定符号实现。`.`匹配任意单字符(换行符除外)。`*`声明前序字符零次或多次重复,`+`要求至少一次重复。`?`标记前序字符可选。`{m,n}`设定重复次数区间。
方括号定义字符集。`[aeiou]`匹配任一英文元音字母。`[0-9]`定位数字字符,等效于`""d`。`""w`覆盖字母数字及下划线。`""s`捕获空白字符。`^`在字符集首部时表示排除,如`[^a-z]`过滤小写字母。
`repile()`将模式字符串转换为正则对象。该对象包含`match()`方法,从字符串起始位置检测匹配。若首字符不符,返回`None`。`search()`扫描整个字符串,返回首个匹配结果的位置信息。`findall()`提取所有非重叠匹配项,以列表形式输出。
`sub()`执行替换操作。参数一为模式,参数二为替换文本,参数三为待处理字符串。`r'""1'`引用捕获组内容。`( )`划定捕获组边界,`(?: )`创建非捕获组。
输入验证需完整匹配。模式首尾添加`^`和`$`。邮件校验表达式示例:`r'""w"".-]+@[""w"".-]+"".""w+$'`。该式要求@符号前含至少一个字符,域名部分含点号后缀。
数据清洗使用`sub(r'""D', '', text)`移除非数字字符。日志解析采用`r'(""d{4}-""d{2}-""d{2}) (""d{2}:""d{2}): (.+)'`分离时间戳与消息。捕获组按顺序编号。
匹配操作返回对象包含`group()`方法。`group(0)`输出完整匹配文本,`group(1)`提取第一捕获组内容。`start()`与`end()`返回匹配区间索引。未匹配时调用这些方法触发`AttributeError`。
模式修饰符影响匹配行为。`re.IGNORECASE`启用大小写不敏感匹配。`re.MULTILINE`使`^`和`$`作用于每行首尾。`re.DOTALL`允许`.`匹配换行符。
正则表达式不解析嵌套结构。处理HTML标签需借助专用解析器。模式复杂度超过特定阈值触发回溯问题,导致匹配耗时指数级增长。