RE正则表达式总结(一)

一、概念

        正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式是对字符(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,用来检索、替换那些符合规则的文本,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

二、匹配规则

1、匹配字符

可打印字符:

 \d : 匹配一个数字,等价于[0-9] ;  

\D : 匹配非数字,等价于[^0-9]

\w : 匹配一个数字、字母或下划线,等价于[A-Za-z_0-9] ;    

\W : 匹配非数字、字母或下划线,等价于[^A-Za-z_0-9]

\s: 匹配空格字符,等价于 [ \f\n\r\t\v];

\S : 匹配非空格,等价于 [^ \f\n\r\t\v];

非打印字符:

\cx : 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符;

\f  :匹配一个换页符。等价于 \x0c 和 \cL;

\n:匹配一个换行符。等价于 \x0a 和 \cJ;

\r :匹配一个回车符。等价于 \x0d 和 \cM;

\t  :匹配一个制表符。等价于 \x09 和 \cI;

\v:匹配一个垂直制表符。等价于 \x0b 和 \cK;

\s : 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符

 

2、匹配元字符(特殊字符)

特殊字符在正则中代表了特殊的含义,要匹配字符本身,需在字符前使用“\”进行转义。

^ :限定输入字符串的开始位置(如在方括号表达式中使用,表示不接受该字符集合),要匹配 ^ 字符本身,使用 \^;

$ :限定输入字符串的结尾位置,要匹配 $ 字符本身,使用 \$;

( ):标记一个子表达式的开始和结束位置,子表达式可以获取供以后使用。要匹配(),使用 \( 和 \);

* :匹配前面的子表达式零次或多次,要匹配 * 字符,使用 \*;

+ :匹配前面的子表达式一次或多次,要匹配 + 字符,使用 \+;

. :匹配除换行符 \n 之外的任何单字符,要匹配 . ,使用 \.,若需匹配换行符,添加参数re.S  ;

[ :标记一个中括号表达式的开始,要匹配 [,使用 \[;

? :匹配前面的子表达式零次或一次,或指明一个非贪婪限定符,要匹配 ? 字符,使用 \?;

\ : 将下一个字符标记为 或特殊字符、或原义字符、或向后引用、或八进制转义符,匹配\,使用\\;

{ :标记限定符表达式的开始,要匹配 {,使用 \{。

| :指明两项之间的一个选择(逻辑“或”运算),要匹配 |,使用 \|。

限定符:

*  :匹配前面的子表达式零次或多次,* 等价于{0,},贪婪模式(最大匹配);

+ :匹配前面的子表达式一次或多次,+ 等价于 {1,},贪婪模式;

? :匹配前面的子表达式零次或一次,? 等价于 {0,1},放在“*”或者“+”后面,表示非贪婪模式(最小匹配);

{n}:n 是一个非负整数。匹配确定的 n 次;

{n,} :n 是一个非负整数。至少匹配n 次,'o{1,}' 等价于 'o+','o{0,}' 则等价于 'o*';

{n,m} :m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次,注意在逗号和两个数之间不能有空格;

 

 定位符:

^:匹配输入字符串开始的位置,如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配;

$ :匹配输入字符串结尾的位置,如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配;

\b:匹配一个字边界,即字与空格间的位置,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”\b 字符的位置是非常重要的,如果它位于要匹配的字符串的开始,它在单词的开始处查找匹配项,如果它位于字符串的结尾,它在单词的结尾处查找匹配项;

\B:非字边界匹配,“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”

[] : 所有字符都是原字符(无特殊含义)字符集

 [^] : 非 [] , 取反,匹配所有不不包含在中括号中的字符,^需要放在[]中首位
 () : 分组,
将“(  )” 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用;

优先级

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。

相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序:

\    

转义符
(), (?:), (?=), []

圆括号和方括号

*, +, ?, {n}, {n,}, {n,m}

限定符

^, $, \任何元字符、任何字符

定位点和序列(即:位置和顺序)

|

替换,"或"操作字符具有高于替换运算符的优先级

 

猜你喜欢

转载自blog.csdn.net/qq_34172340/article/details/81406784