其实正则表达式这种技术,源于一个很简单的问题:
> 如何通过变成使得计算机具有在文本中检索某种模式的能力?
而正则表达式为通过编程实现高级的文本模式匹配、抽取、与/或文本形式的搜索和替换提供了基础。
## 概念
### 正则表达式
正则表达式(Regular Expression,简称Regex)是一些由字符和特殊符号组成的字符串,它可以描述模式的重复或表述多个字符。即,正则表达式字符串描述了一个可以识别各种字符串的模式。
正则表达式按照某种模式匹配一系列有相似特征的字符串(也就是能匹配多个字符串)。
### Python正则中的 搜索 & 匹配
如果我们把视角放在*“字符串相关的匹配(matching)”*,我们通常更加严格的将这种匹配称为**模式匹配(pattern-matching)**。
在Python中,要实现模式匹配有两种方法:
* 搜索(searching)
在字符串任意部分中搜索匹配的模式。
* 匹配(matching)
判断一个字符串能否从起始处全部或者部分地匹配出某个模式。
**注意**:*以上的划分方式,只适用于Python,如果谈论的是模式本身,那么全部应该使用术语“匹配”或“模式匹配”*
### Python中的 正则库
Python通过标准库中的 `re`模块 来支持正则表达式的大部分操作。
而对于最基本的两个概念(搜索与匹配):
* `re.search`函数 实现了Python正则中的搜索
* `re.match`函数 实现了Python正则中的匹配
当然,Python标准库中的的`re`模块远不止这么简单,读者需要以上面两个函数为起点开始学习。
更多Python视频、源码、资料加群683380553免费获取
## 第一个正则表达式
首先来看一个正则表达式:
`[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'>
```