Python正则表达式—简介

其实正则表达式这种技术,源于一个很简单的问题:

> 如何通过变成使得计算机具有在文本中检索某种模式的能力?

而正则表达式为通过编程实现高级的文本模式匹配、抽取、与/或文本形式的搜索和替换提供了基础。

## 概念

### 正则表达式

正则表达式(Regular Expression,简称Regex)是一些由字符和特殊符号组成的字符串,它可以描述模式的重复或表述多个字符。即,正则表达式字符串描述了一个可以识别各种字符串的模式。

正则表达式按照某种模式匹配一系列有相似特征的字符串(也就是能匹配多个字符串)。

### Python正则中的 搜索 & 匹配

如果我们把视角放在*“字符串相关的匹配(matching)”*,我们通常更加严格的将这种匹配称为**模式匹配(pattern-matching)**。

在Python中,要实现模式匹配有两种方法:

* 搜索(searching)

在字符串任意部分中搜索匹配的模式。

* 匹配(matching)

判断一个字符串能否从起始处全部或者部分地匹配出某个模式。

**注意**:*以上的划分方式,只适用于Python,如果谈论的是模式本身,那么全部应该使用术语“匹配”或“模式匹配”*

### Python中的 正则库

Python通过标准库中的 `re`模块 来支持正则表达式的大部分操作。

而对于最基本的两个概念(搜索与匹配):

* `re.search`函数 实现了Python正则中的搜索

* `re.match`函数 实现了Python正则中的匹配

当然,Python标准库中的的`re`模块远不止这么简单,读者需要以上面两个函数为起点开始学习。

## 第一个正则表达式

首先来看一个正则表达式:

`[A-Za-z]\w+`

该正则表达描述了几个要点:

1. 第一个字符是字母。即要么A~Z或者a~z、

`[ ]`的作用大致是,整体表示一个字符,这一个字符必须满足方括号中的列出的规则。

例如本例:这一个字符,必须是A-Z或者a-z中的某一个

2. 后面接一个或者多个字母或数字

`\w`的意思是表示任意一个字母或数字

`+`表示前面的直接相接部分的模式要出现至少一次

例如本例:`\w+`表示的是,`\w`至少要出现一次,也就是说要有一个或多个字母或数字

### 案例的Python实现

```python

>>> import re

>>> re.match(r'[A-Za-z]\w+', 'Tuple is good')

<_sre.SRE_Match object; span=(0, 5), match='Tuple'>

>>> re.match(r'[A-Za-z]\w+', ' Tuple is good')

None

>>> re.search(r'[A-Za-z]\w+', ' Tuple is good')

<_sre.SRE_Match object; span=(1, 6), match='Tuple'>

>>> re.search(r'[A-Za-z]\w+', 'a Tuple is good')

<_sre.SRE_Match object; span=(2, 7), match='Tuple'>

```

猜你喜欢

转载自blog.csdn.net/sinat_38682860/article/details/72871939