Python的正则表达式
正则表达式可以定义为用于在字符串中搜索模式的字符序列。模块重新提供了在python程序中使用正则表达式的支持。如果在使用正则表达式时出现错误,则re模块会抛出异常。
该重模块必须导入到使用正则表达式功能的python。
import re
正则表达式函数
python中使用了以下正则表达式函数。
SN | 功能 | 描述 |
1 | match | 此方法将字符串中的正则表达式模式与可选标志匹配。如果在字符串中找到匹配则返回true,否则返回false。 |
2 | search | 如果在字符串中找到匹配项,则此方法返回匹配对象。 |
3 | findall | 它返回一个列表,其中包含字符串中模式的所有匹配项。 |
4 | split | 返回在每个匹配中已拆分字符串的列表。 |
5 | sub | 替换字符串中的一个或多个匹配项。 |
创建正则表达式
可以通过使用元字符,特殊序列和集合的混合来形成正则表达式。
元字符
元字符是具有指定含义的字符。
元字符 | 描述 | 示例 |
[] | 它代表一组字符。 | “[AZ]” |
\ | 它代表了特殊的序列。 | “\ r” |
。 | 它表示任何角色出现在某个特定的地方。 | “Ja.v.” |
^ | 它表示字符串开头的模式。 | “^的Java” |
$ | 它表示字符串末尾的模式。 | “点” |
* | 它表示字符串中出现零个或多个模式。 | “你好*” |
+ | 它表示字符串中一个或多个模式的出现。 | “你好+” |
{} | 字符串的指定出现次数。 | “Java的{2}” |
| | 它代表这个或那个角色存在。 | “Java的|点” |
() | 捕获和分组 |
特殊序列
特殊序列是包含\后跟其中一个字符的序列。
字符 描述 | |
\一个 | 如果指定的字符出现在字符串的开头,则返回匹配项。 |
\ b | 如果指定的字符出现在字符串的开头或结尾,则返回匹配项。 |
\乙 | 如果指定的字符出现在字符串的开头但不在结尾处,则返回匹配项。 |
\ d | 如果字符串包含数字[0-9],则返回匹配项。 |
\ d | 如果字符串不包含数字[0-9],则返回匹配项。 |
\ S | 如果字符串包含任何空格字符,则返回匹配项。 |
\ S | 如果字符串不包含任何空格字符,则返回匹配项。 |
\ W | 如果字符串包含任何单词字符,则返回匹配项。 |
\ W | 如果字符串不包含任何单词,则返回匹配项。 |
\ž | 如果指定的字符位于字符串的末尾,则返回匹配项。 |
集
集合是在一对方括号内给出的一组字符。它代表了特殊的意义。
SN | 组 | 描述 |
1 | [ARN] | 如果字符串包含集合中的任何指定字符,则返回匹配项。 |
2 | [一个] | 如果字符串包含a到n之间的任何字符,则返回匹配项。 |
3 | [^ ARN] | 如果字符串包含除a,r和n之外的字符,则返回匹配项。 |
4 | [0123] | 如果字符串包含任何指定的数字,则返回匹配项。 |
5 | [0-9] | 如果字符串包含0到9之间的任何数字,则返回匹配项。 |
6 | [0-5] [0-9] | 如果字符串包含介于00和59之间的任何数字,则返回匹配项。 |
7 | [A-ZA-Z] | 如果字符串包含任何字母(小写或大写),则返回匹配项。 |
findall()函数
此方法返回一个列表,其中包含字符串中模式的所有匹配项的列表。它按照找到的顺序返回模式。如果没有匹配项,则返回空列表。
请考虑以下示例。
例
import re str = "How are you. How is everything" matches = re.findall("How", str) print(matches) print(matches)
输出:
['How', 'How']
匹配对象
匹配对象包含有关搜索和输出的信息。如果找不到匹配项,则返回None对象。
例
import re str = "How are you. How is everything" matches = re.search("How", str) print(type(matches)) print(matches) #matches is the search object
输出:
<class'_sre.SRE_Match'> <_sre.SRE_Match对象; span =(0,3),match ='How'>
Match对象方法
有与Match对象关联的以下方法。
span():返回包含匹配起始位置和结束位置的元组。
string():返回传递给函数的字符串。
group():返回匹配项的字符串部分。
例
import re str = "How are you. How is everything" matches = re.search("How", str) print(matches.span()) print(matches.group()) print(matches.string)
输出:
(0, 3) How How are you. How is everything