当前位置:实例文章 » Python实例» [文章]Python正则表达式详解,保姆式教学,0基础也能掌握正则

Python正则表达式详解,保姆式教学,0基础也能掌握正则

发布人:shili8 发布时间:2023-05-13 14:15 阅读次数:19

正则表达式(Regular Expression)又称正规表示法、正规表示式、正则表达式、REGEXP等,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。Python中内置了re模块,可以用于对字符串进行正则匹配。

下面是一个简单的例子,使用re模块实现对字符串进行匹配和替换:

```python
import re

s = "abc123def456"
pattern = re.compile(r'\d+')
result = pattern.findall(s)
print(result)

new_s = pattern.sub("###", s)
print(new_s)
```

输出结果如下:

```
['123', '456']
abc###def###
```

以上代码使用`\d+`这个正则表达式匹配字符串`s`中的数字,并将结果都存储在`result`变量中;然后使用`sub()`函数将字符串中的数字替换成了`###`。

下面是正则表达式的解释与说明:

- `\d` 表示任意数字,等价于字符类[0-9]。
- `+` 表示重复一次或多次,即匹配一次或多次任意数字。
- `re.compile(pattern)` 用于创建一个正则表达式模式对象,这里将`\d+`作为模式进行编译。
- `pattern.findall(string[, pos[, endpos]])` 方法从字符串的开头开始查找正则表达式匹配,返回所有符合的子串组成的列表。`pos`和`endpos`参数表示要匹配的字符串范围。
- `pattern.sub(repl, string[, count])` 方法将模式中匹配到的字符串用`repl`替换掉,并返回替换后的字符串。其中`count`参数指定最多替换多少次。

正则表达式还有很多其他的符号和语法,下面列出一些常用的:

| 符号 | 描述 |
| --- | --- |
| `.` | 匹配除换行符以外的任意字符 |
| `^` | 匹配字符串的开头 |
| `$` | 匹配字符串的结尾 |
| `*` | 匹配前一个字符出现 0 次或多次 |
| `?` | 匹配前一个字符出现 0 次或 1 次 |
| `+` | 匹配前一个字符出现 1 次或多次 |
| `\s` | 匹配任意空白字符 |
| `\S` | 匹配任意非空白字符 |
| `\w` | 匹配任意字母、数字、下划线 |
| `\W` | 匹配任意非字母、数字、下划线 |
| `[...]` | 匹配方括号中的任意一个字符 |
| `(pattern)` | 匹配 pattern 并捕获该匹配的子字符串 |
| `|` | 或运算,匹配两侧任意一个表达式 |
| `{m}` | 匹配前一个字符出现 m 次 |
| `{m,n}` | 匹配前一个字符出现 m~n 次 |
| `(?:pattern)` | 匹配 pattern 但不捕获该匹配的子字符串 |

在正则表达式中,一些符号需要使用转义字符`\`来表示字面意义,例如`\d`表示数字,而`\.`表示匹配实际的句点字符。如果要匹配`\`本身,则需要使用`\\`来表示。

除了基本的正则表达式符号和语法外,re模块还提供了一些高级功能,例如分组、零宽断言、贪婪与非贪婪模式等,这些内容超出了本篇文章的范围,可以参考re模块的官方文档进行学习。

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top