利用字符集合区间的正则表达(二)
利用元字符 [ 和 ] 定义一个集合,出现在[ 和 ] 之间的所有字符都是集合的组成部分,必须匹配到其中的某个成员,但并非全部,[ ] 不匹配任何字符,它们只负责定义一个字符集合,是属于OR关系,而不是AND关系
正则表达:
[ns]a.\.xls
正则解释:[ 和 ] 表示定义了一个集合,[ns]会匹配到以n或s字母开头字符,普通字符a匹配字符a,\.对.(dot)进行了转意,表示只匹配到.(dot),普通字符xls匹配字符串xls
正则表达:
[Hh][Tt][Mm][Ll]
正则解释:这个正则可以匹配html元素
<html><head><\head><body></body></html>
正则表达:
[ns]a.[0123456789]\.xls
等价于
[ns]a.[0-9]\.xls
笔记:[0-9] 是字符区间,这样的合法的字符区间还有很多,例如:
- A-Z,匹配从A到Z的所有大写字母
- a-z,匹配a到z的所有小写字母
- A-F,匹配A到F的所有大写字母
- A-z,匹配ASCII(美国信息交换标准代码)字符A到ASCII字符z的所有字母
开源中国对ASCII表的总结:https://tool.oschina.net/commons?type=4
不难发现从从ASCII值为91-96对应的字符不是大小写字母,所以这个字符区间A-z一般不常用
注意:-是一个特殊的元字符,它只有出现在字符集合[ 和 ] 之间的时候才是元字符。在字符集合以外的地方,-只是一个普通字
字符区间[0-9A-Fa-f]可以用于匹配RGB的值
正则表达:
#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]
笔记:连续写6个[0-9A-Fa-f]其实很麻烦,后面可以简化
匹配到正确的结果的正则表达式没有对错,只是程序员习惯使用哪一种罢了,只要匹配到正确结果的正则表达式都是好的,无论简繁与否
排除集合(实质上是在集合中取反)
[ns]a[^0-9].\xls
元字符 ^ 用于排除字符集合,强制排除指定字符集合之外的字符