[关闭]
@llplmlyd 2018-09-15T00:09:57.000000Z 字数 1386 阅读 927

正则表达式

Python


一个正则表达式通常被称为一个模式(pattern)

基本语法

选择

竖线|代表选择(即或集),具有最低优先级。例如gray|grey可以匹配grey或gray

数量限定+、?和*

  1. 加号+代表前面的字符必须至少出现一次。(1次或多次)。例如,goo+gle可以匹配googlegoooglegoooogle等;
  1. 问号?代表前面的字符最多只可以出现一次。(0次或1次)。例如,colou?r可以匹配color或者colour;
  1. 星号*代表前面的字符可以不出现,也可以出现一次或者多次。(0次、1次或多次)。例如,0*42可以匹配42042004200042等。

匹配

圆括号()可以用来定义操作符的范围和优先度
例如,gr(a|e)y等价于gray|grey
要做更精确地匹配,可以用[]表示范围

[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线;
[0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等;
[a-zA-Z_][0-9a-zA-Z_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;
[a-zA-Z_][0-9a-zA-Z_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

表达式全集

适用于Perl或者Python编程语言(grep或者egrep的正则表达式文法是PCRE的子集):

\ “\n”匹配一个换行符。序列“\”匹配“\”而“(”则匹配“(”
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
{n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
{n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
{n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。
. 匹配除“\r”“\n”之外的任何单个字符。要匹配包括“\r”“\n”在内的任何字符,请使用像“(.
(?:pattern) 匹配pattern但不获取匹配的子字符串(shy groups),也就是说这是一个非获取匹配,不存储匹配的子字符串用于向后引用。这在使用或字符“(
[xyz] 字符集合(character class)。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 排除型字符集合(negated character classes)。
[a-z] 字符范围。匹配指定范围内的任意字符。
\d 匹配一个数字字符。
\D 匹配一个非数字字符。
\f 匹配一个换页符。
\n 匹配一个换行符。
\r 匹配一个回车符
\s 匹配任何空白字符,
\S 匹配任何非空白字符
\t 匹配一个制表符
\v 匹配一个垂直制表符。

https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
正则匹配URL:[a-zA-z]+://[^\s]*

正则测试网站:http://tool.oschina.net/regex#

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注