一个正则表达式通常被称为一个模式(pattern)
基本语法
选择
竖线|代表选择(即或集),具有最低优先级。例如gray|grey可以匹配grey或gray
数量限定+、?和*
1 | 加号+代表前面的字符必须至少出现一次。(1次或多次)。例如,goo+gle可以匹配google、gooogle、goooogle等; |
1 | 问号?代表前面的字符最多只可以出现一次。(0次或1次)。例如,colou?r可以匹配color或者colour; |
1 | 星号*代表前面的字符可以不出现,也可以出现一次或者多次。(0次、1次或多次)。例如,0*42可以匹配42、042、0042、00042等。 |
匹配
圆括号()可以用来定义操作符的范围和优先度
例如,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”在内的任何字符,请使用像“(. | \r | \n)”的模式。 | |
(?:pattern) | 匹配pattern但不获取匹配的子字符串(shy groups),也就是说这是一个非获取匹配,不存储匹配的子字符串用于向后引用。这在使用或字符“( | )”来组合一个模式的各个部分是很有用。例如“industr(?:y | ies)”就是一个比“industry | industries”更简略的表达式。 |
[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#