正则表达式使用元字符匹配特定的字符或字符类型(三)

正则表达式使用元字符匹配特定的字符或字符类型(三)

1、再谈转义

之前学习的元字符回顾:

/ 转义元字符

[ 字符集合的开始

] 字符结合的结束

-是一个特殊的元字符,它只有出现在字符集合[ 和 ] 之间的时候才是元字符。在字符集合以外的地方,-只是一个普通字符

.(dot) 用于匹配任意的单个字符

^用于排除字符集合

观察两个正则表达式

myArray[0]

myArray\[0\]

前者只匹配到myArray0,后者匹配到myArray[0]

原因在于:正则表达式里[ 和 ] 是用来定义字符集合的,而不是[ 和 ] 本身

正则表达:

myArray\[[0-9]\]

myArray\[[0-9]\]可以匹配到myArray[0]、myArray[1] 、…、 myArray[8]、myArray[9]

这也就不难理解在Java或者Python等等其他的语言中,指定windows本地路径的时候为什么要用\\了

正常的windows路径是这样的:D:\develop\software\home

当我们在大部分编程语言或者脚本语言中却是这样使用的D:\\develop\\software\\home

2、匹配空白字符

空白元字符表

元字符说明
[\b]回退(并删除)一个字符(Backspace)
\f换页符号-------f为page的首字母
\n换行符
\r回车符----return的首字母
\t制表符(Table)
\v垂直制表符

\r\n匹配一个“回车(carriage return)+ 换行(line feed)“组合是很多操作系统的结束标记

\r\n\r\n是两条记录直接的空白行

Windows文本行结束标记:\r\n

Unix/Linux和Mac OS匹配空白行仅仅需要\n即可

理想的正则表达式应该适应上面两种情况:包含一个可选的\r和一个必须被匹配的\n

3、匹配特定的字符类型

a、匹配数字

数字元字符表

元字符说明
\d任何一个数字字符(等价于[0-9])
\D任何一个非数字字符(等价于[^0-9])

利用数字元字符表示正则表达的等价

myArray\[[0-9]\]
myArray\[[0123456789]\]
myArray\[[\d]\]
b、匹配字母数字

字母数字元字符

元字符说明
\w任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-z0-9_])
\W任何一个非字母数字或下划线字符(等价于[^a-zA-z0-9_])

4、匹配空白字符

空白字符元字符

元字符说明
\s任何一个空白字符(等价于[\f\n\r\t\v])
\S任何一个非空空白符(等价于[^\f\n\r\t\v])

注意:用来匹配退格符的[\b]元字符不在\s的覆盖范围内,\S也没有将其排除

5、匹配16进制或8进制

这个知识可能在我整个人生中都不会用到,但是必须要了解

16进制\x0A(对应ASCII字符10,也就是换行符)等价于\n

8进制\011(对应ASCII字符9,也就是制表符)等价于\t

6、使用POSIX

POSIX是一种特殊的标准字符类集,也是许多正则表达式实现都支持的一种简写方式

POSIX字符类

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

注意:JavaScript不支持在正则表达式里使用POSIX字符类

使用POSIX字符类的时候必须以 [[ 开头,以 ]] 结束,外层的[ 和 ]字符用来定义一个字符集合,内层的[ 和 ]字符是POSIX字符类本身的组成部分

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值