Python 正则简略梳理
正好又要用到,算温故知新吧。
正则表达式
称为RE,或正则,或正则表达式。本质上是嵌入在Python中的一种微小的。专业化的编程语言,可以通过re模块获得。
元字符的完整列表;
. ^ $ * + ? { } [ ] \ | ( )
. 匹配除了换行的任意字符。指定了DOTALL,它将匹配包括换行符的任意字符
^ 匹配字符串的开头,并且在MULTILINE模式也匹配换行后的首个符号
$ 匹配字符串或者尾或者换行符前一个字符。通常是一个元字符,但在一个字符类中的元字符不生效。例如,[skm$]将匹配‘s','k','m'或'$'中的任意字符;
- 与字面上字符 * 不匹配;指定前一个字符可以匹配零次或多次,而不是恰好一次。
.* 连在一起就意味着任意数量的不包括换行的字符。
- 也是重复的元字符;它匹配一次或多次。 与 + 之间的区别; 匹配零次或更多次。而至少需要 一次。
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
b 是正则表达式规定的一个特殊的代码。不匹配任何一个字符,只匹配一个位置。匹配单词的开始或结束。
d 匹配一位数字。-不是元字符,只匹配它本身,连字符(或者减号)
s 匹配任意空白符,包括空客,制表符(Tab),中文全角空格等。
w 匹配字母或数字或下划线或汉字等。
B 匹配不是单词开头或结束的位置
D 匹配任意非数字的字符
S 匹配任意不是空白符的字符
W 匹配任意不是字母,数字,下划线,汉字的字符
1 匹配除x以外的任意字符
2 匹配除了aeiou这几个字母以外的任意字符
<a3+>匹配用尖括号括起来的以a开头的字符串
常用的分组语法
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp不捕获匹配的文本,也不给此分组分配组号
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
例:d{3}(?!d)匹配三位数字,而且这三位数字的后面不能是数字;b((?!abc)w)+b匹配不包含连续字符串abc的单词。
*? 重复任意次,但尽可能少重复
+? 重复一次或更多次,当尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
(?#comment) 包含注释。例如:2[0-4]d(?#200-249)|250-5|[01]?dd?(?#0-199)。
编写正则的三步走:
手机导入re模块
1、将正则表达式的字符串形式编译为一个实例
实例 = re.compile('匹配的规则')
2、使用实例处理文本并获得匹配结果
匹配结果 = 实例.match('匹配的对象内容')
3、实例获得的信息进行其它操作。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。