"这篇笔记主要介绍了Python中的正则表达式,包括如何导入模块、使用常用函数进行匹配、分组、查找、替换和切割字符串。同时,对比了`re.match`和`re.search`函数的不同,并展示了`re.findall`、`re.sub`、`re.split`等函数的用法。此外,还提到了正则表达式的编译和添加注释,以及基础语法和限定符的使用。"
在Python中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和解析字符串。要使用正则表达式,首先需要导入`re`模块。以下是一些关键的正则表达式函数:
1. `re.match(pattern, string)`: 这个函数检查字符串的开始是否符合模式,如果匹配成功,返回一个匹配对象;否则返回`None`。在这个例子中,`re.match("c", "ccc")`返回`c`,而`re.match("c", "acc")`则返回错误,因为`c`不在字符串的开头。
2. `re.search(pattern, string)`: 与`re.match`不同,`re.search`会在整个字符串中查找第一个匹配的模式。如示例所示,`re.search("c", "acb")`返回`c`。
3. `re.findall(pattern, string)`: 这个函数返回所有非重叠匹配的列表。在示例中,`re.findall("abc", "abc,abc,abc")`返回包含三个`abc`的列表。
4. `re.sub(pattern, repl, string)`: 此函数将字符串中所有与模式匹配的部分替换为`repl`指定的字符串。在示例中,`re.sub("\d+?", "n", "123")`将数字替换为`n`,结果为`"nnn"`。
5. `re.split(pattern, string)`: 使用模式分割字符串。例如,`re.split('\d+', "aaa11bbb33e")`将数字视为分隔符,返回`['aaa', 'bbb', 'e']`。
正则表达式的编译通过`re.compile()`可以提高效率,预先编译的正则表达式可以多次使用而无需每次都解析。编译后的正则表达式可以通过`.search()`、`.match()`等方法进行操作。
在编写复杂的正则表达式时,可以使用`re.VERBOSE`标志来增加可读性。这样可以为正则表达式添加注释,并使用空格和换行进行格式化。例如,用于匹配价格的正则表达式可以写得更易读:
```python
r = re.compile("""
\d+#整数
\.?#小数点
\d+#小数
""", re.VERBOSE)
ret = re.search(r, "bookpriceis10.32yuan")
print(ret.group())
```
正则表达式的基础语法包括各种限定符,如`*`(匹配0个或多个),`+`(匹配1个或多个),`?`(匹配0个或1个),以及`\d`(匹配数字),`\D`(匹配非数字),`\s`(匹配空白字符),`\S`(匹配非空白字符)等。
通过理解这些概念,你可以更有效地处理文本数据,进行复杂的查找、替换和分析操作。在实际开发中,掌握正则表达式对于处理字符串相关的任务至关重要。