正则表达式教程之元字符的使用详解(2)

十六进制:用前缀\x来给出,如:\x0A对应于ASCII字符10(换行符),其效果等价于\n。
八进制:用前缀\0来给出,数值本身可以是两位或三位数字,如:\011对应于ASCII字符9(制表符),其效果等价于\t。

四、使用POSIX字符类

POSIX字符类是很多正则表达式实现都支持的一种简写形式。Java也支持它,但JavaScript不支持。POSIX字符如下所示:

[:alnum:]   任何一个字母或数字,等价于[a-zA-Z0-9]  
[:alpha:]   任何一个字母,等价于[a-zA-Z]  
[:blank:]   空格或制表符,等价于[\t]  
[:cntrl:]   ASCII控制字符(ASCII 0到31,再加上ASCII 127)  
[:digit:]   任何一个数字,等价于[0-9]  
[:graph:]   任何一个可打印字符,但不包括空格  
[:lower:]   任何一个小写字母,等价于[a-z]  
[:print:]   任何一个可打印字符  
[:punct:]   既不属于[:alnum:]和[:cntrl:]的任何一个字符  
[:space:]   任何一个空白字符,包括空格,等价于[^\f\n\r\t\v]  
[:upper:]   任何一个大写字母,等价于[A-Z]  
[:xdigit:]   任何一个十六进制数字,等价于[a-fA-F0-9]  

POSIX字符和之前见过的元字符不太一样,我们来看一个前面利用正则表达式来匹配网页中的颜色的例子:

文本:<span>测试</span>

正则表达式:#[[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [[:xdigit:]]

结果:<spancolor: #ff6600">【#3636FF】;height:30px;width:60px;">测试</span>

注意:这里使用的模式以[[开头、以]]结束,这是使用POSIX字符类所必须的,POSIX字符必须括在[:和:]之间,外层[和]字符用来定义一个集合,内层的[和]字符是POSIX字符类本身的组成部分。

在java中的POSIX字符表示有所不同,不是包括在[:和:]之间,而是以\p开头,包括在{和}之间,且大小写有区别,同时增加了\p{ASCII},如下所示:

\p{Alnum}   字母数字字符:[\p{Alpha}\p{Digit}]  
\p{Alpha}   字母字符:[\p{Lower}\p{Upper}]  
\p{ASCII}   所有 ASCII:[\x00-\x7F]  
\p{Blank}   空格或制表符:[ \t]  
\p{Cntrl}   控制字符:[\x00-\x1F\x7F]  
\p{Digit}   十进制数字:[0-9]  
\p{Graph}   可见字符:[\p{Alnum}\p{Punct}]  
\p{Lower}   小写字母字符:[a-z]  
\p{Print}   可打印字符:[\p{Graph}\x20]  
\p{Punct}   标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~  
\p{Space}   空白字符:[ \t\n\x0B\f\r]  
\p{Upper}   大写字母字符:[A-Z]  
\p{XDigit}   十六进制数字:[0-9a-fA-F]  

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjsfyz.html