perl学习笔记—正则表达式

时间:2021-12-07 07:18:08
. 匹配除换行符以外的所有字符   /c..i/ 找到c后面跟着二个任意字符,再跟着i的字符串

x? 匹配0次或一次x字符串 

x* 匹配0次或多次x字符串,但匹配可能的最少次数;   x+ 匹配1次或多次x字符串,但匹配可能的最少次数 

.* 匹配0次或一次的任何字符;  .+ 匹配1次或多次的任何字符 

{m} 匹配刚好是m个的指定字符串;  {m,} 匹配 m个 以上 的指定字符串 

{m,n} 匹配在 m个 以上 n个 以下 的指定字符串  /\d{5,12}/ 5-12位数字  /cg{2,4}i/找到c后跟着2个到4个g再跟着i的字符串 

[] 匹配符合 []内的字符 [] 匹配一组字符中的一个,如/a[0123456789]c/将匹配a加数字加c的字符串。与+联合使用例:/d[eE]+f/匹配def、 dEf、deef、dEdf、dEEEeeeEef等。

[^] 匹配不符合 [] 内的字符 ^表示除其之外的所有字符,如:/d[^deE]f/匹配d加非e字符加f的字符串。 

[0-9] 匹配所有数字字符; 
[a-z] 匹配所有小写字母字符; 
[^0-9] 匹配所有非数字字符; 
[^a-z] 匹配所有非小写字母字符 


^ 匹配字符开头的字符 /^perl/ 找到开头是 perl 的字符串


$ 匹配字符结尾的字符 /perl$/ 找到结尾是 perl 的字符串

\d 匹配一个数字的字符,和 [0-9] 语法一样; \d+ 匹配多个数字字符串,和 [0-9]+ 语法一样 

\D 非数字,其他同 \d; \D+ 非数字,其他同 \d+ 

\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样;  \w+ 和 [a-zA-Z0-9]+ 语法一样 
 
\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样;  \W+ 和 [^a-zA-Z0-9]+ 语法一样 

\s 空格,和 [\n\t\r\f] 语法一样;  \s+ 和 [\n\t\r\f]+ 一样 

\S 非空格,和 [^\n\t\r\f] 语法一样;  \S+ 和 [^\n\t\r\f]+ 语法一样 

\b 匹配以英文字母,数字为边界的字符串;  \B 匹配不以英文字母,数值为边界的字符串 

a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串; abc 匹配含有 abc 的字符串 

(pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。  

/pattern/i i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。 

\ 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效 
 
4、转义字符 
如果你想在模式中包含通常被看作特殊意义的字符,须在其前加斜线"\"。如:/\*+/中\*即表示字符*,而不是上面提到的一个或多个字符的含义。斜线的表示为/\\/。在PERL5中可用字符对\Q和\E来转义。 
在反斜杠前面 加上反斜杠 即可,当然这是在有内插的上下文环境中,例如双引号内部,正则表达式内部。
若是无内插的上下文环境,例如,单引号内部,那就直接一个反斜杠即可了,反正不会转义。