# 正则表达式

> 原文： [https://pythonspot.com/regular-expressions/](https://pythonspot.com/regular-expressions/)

正则表达式本质上是嵌入在 Python 中的一种高度专业化的编程语言，它使您能够为想要匹配的可能字符串集指定规则。

在 Python 中，您需要`re`模块来使用正则表达式。 语法概述在此页面的底部。

## 匹配函数

匹配函数定义为：

```py
re.match(pattern, string)

```

参数为：

| 参数 | 描述 |
| --- | --- |
| `pattern` | 正则表达式 |
| `string` | 输入字符串 |

如果要将字符串与正好为五个的数字序列匹配，可以使用以下代码：

```py
#!/usr/bin/python
import re

input = raw_input("Enter an input string:")
m = re.match('\d{5}\Z',input)

if m:
    print("True")
else:
    print("False")

```

输出示例：

## 电子邮件验证正则表达式

我们可以使用相同的函数来验证电子邮件地址。 语法规则在`re.compile`和语法表中可见。

| 字符串 | 匹配 |
| --- | --- |
| `12345` | 真 |
| `12358` | 真 |
| `55555` | 真 |
| `123` | 假 |
| `123K5` | 假 |
| `5555555` | 假 |

```py
#!/usr/bin/python
import re

input = raw_input("Enter an input string:")
m = re.match('[^@][email protected][^@]+\.[^@]+',input)

if m:
    print("True")
else:
    print("False")

```

## 搜索函数

搜索函数定义为：

```py
re.search(pattern, string)

```

参数为：

| 参数 | 描述 |
| --- | --- |
| `pattern` | 正则表达式，定义要搜索的字符串 |
| `string` | 搜索空间 |

要搜索电子邮件地址是否在字符串中：

```py
#!/usr/bin/python
import re

input = "Contact me by [email protected] or at the office."

m = re.search('[^@][email protected][^@]+\.[^@]+',input)

if m:
    print("String found.")
else:
    print("Nothing found.")

```

## 正则表达式示例

正则表达式的一些示例：

## 正则表达式语法

正则表达式语法概述：

| 示例 | 正则表达式 |
| --- | --- |
| IP 地址 | `(([2][5][0-5]\.)|([2][0-4][0-9]\.)|([0-1]?[0-9]?[0-9]\.)){3}(([2][5][0-5])|([2][0-4][0-9])|([0-1]?[0-9]?[0-9]))` |
| 电子邮件 | `[^@]+@[^@]+\.[^@]+` |
| 日期`MM/DD/YY` | `(\d+/\d+/\d+)` |
| 整数（正） | `(?<![-.])\b[0-9]+\b(?!\.[0-9])` |
| 整数 | `[+-]?(?<!\.)\b[0-9]+\b(?!\.[0-9])` |
| 浮点 | `(?<=>)\d+.\d+|\d+` |
| 十六进制 | `\s–([0-9a-fA-F]+)(?:–)?\s` |

| 正则表达式 | 描述 |
| --- | --- |
| `\d` | 匹配任何十进制数字； 这相当于类`[0-9]` |
| `\D` | 匹配任何非数字字符； 这等效于类`[^0-9]`。 |
| `\s` | 匹配任何空白字符； 这等效于类`[ \t\n\r\f\v]`。 |
| `\S` | 匹配任何非空白字符； 这等效于类`[^ \t\n\r\f\v]`。 |
| `\w` | 匹配任何字母数字字符； 这等效于类`[a-zA-Z0-9_]`。 |
| `\W` | 匹配任何非字母数字字符； 这等效于类`[^a-zA-Z0-9_]`。 |
| `\Z` | 仅在字符串末尾匹配 |
| `[..]` | 匹配括号中的单个字符 |
| `[^..]` | 匹配任何不在方括号中的单个字符 |
| `.` | 匹配换行符以外的任何字符 |
| `$` | 匹配字符串的结尾 |
| `*` | 匹配 0 个或更多重复 |
| `+` | 1 次或多次重复 |
| `{m}` | 之前 RE 的确切 m 个副本应匹配。 |
| <code>&#124;</code> | 匹配 A 或 B。 |
| `?` | 先前 RE 的 0 或 1 次重​​复 |
| `[a-z]` | 任何小写字符 |
| `[A-Z]` | 任何大写字符 |
| `[a-zA-Z]` | 任何字符 |
| `[0-9]` | 任何数字 |