Python正则表达式教程:文本处理利器

1 下载量 32 浏览量 更新于2024-08-31 收藏 94KB PDF 举报
"这篇文档详细介绍了如何在Python中使用正则表达式,特别是针对文本处理和数据抓取的场景。作者以查询IP地址为例,展示了如何利用正则表达式从网页源码中提取所需信息。" 在Python中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。Python提供了`re`模块来支持正则表达式,下面我们将详细探讨其主要功能和使用方法。 1. **导入re模块** 在Python中,首先需要导入`re`模块才能使用正则表达式。例如: ```python import re ``` 2. **基础匹配** - **基本匹配符**:如`.`代表任意字符,`\d`代表数字,`\s`代表空白字符。 - **边界匹配符**:如`^`表示行首,`$`表示行尾,`\b`表示单词边界。 3. **模式匹配函数** - `re.match(pattern, string)`: 从字符串开始位置匹配,如果匹配成功返回匹配对象,否则返回None。 - `re.search(pattern, string)`: 在整个字符串中查找第一个匹配项,成功返回匹配对象,否则返回None。 - `re.findall(pattern, string)`: 返回所有非重叠匹配的子串列表。 - `re.finditer(pattern, string)`: 返回一个迭代器,每个元素是一个匹配对象。 - `re.split(pattern, string)`: 按照匹配的模式分割字符串,返回一个列表。 - `re.sub(pattern, repl, string)`: 将字符串中所有匹配的部分替换为另一个字符串。 4. **正则表达式修饰符** - `re.IGNORECASE`: 忽略大小写。 - `re.MULTILINE`: 多行模式,使`^`和`$`可以匹配每一行的开始和结束。 - `re.DOTALL`: 使`.`匹配包括换行符在内的所有字符。 5. **高级功能** - **括号捕获组**:`( )`用来捕获匹配的子串,可以通过`match.group()`获取。 - **重复量词**:`*`表示零次或多次,`+`表示一次或多次,`?`表示零次或一次,`{n}`表示精确匹配n次,`{n,}`表示至少匹配n次,`{n,m}`表示至少匹配n次但不超过m次。 - **选择和分组**:`|`表示选择,如`a|b`匹配'a'或'b'。 - **反义字符**:`\D`表示非数字,`\S`表示非空白字符。 6. **实例分析** 在提供的例子中,要从HTML源码中提取IP地址对应的信息,可以先使用正则表达式找到`<li>`标签内的内容。例如: ```python import re html = """ ... (此处为示例HTML源码) """ # 查找<li>标签内的所有内容 pattern = r'<li>(.*?)</li>' matches = re.findall(pattern, html, re.IGNORECASE) # 提取并处理信息 for item in matches: print(item) ``` 这样,我们就可以从HTML源码中获取到IP地址对应的所有地区信息了。 Python的正则表达式是进行文本处理的强大工具,无论是在抓取数据还是处理复杂文本结构时都能发挥重要作用。通过熟练掌握正则表达式,开发者可以更高效地完成文本分析和数据提取任务。