要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办?
很简单,你只需要在方括号里列出它们就行了,像[aeiou]
就匹配任何一个英文元音字母
,[.?!]
匹配标点符号(.或?或!)
。
我们也可以轻松地指定一个字符范围,像[0-9]
代表的含意与\d
就是完全一致的:一位数字
;同理[a-z0-9A-Z_]
也完全等同于\w
(如果只考虑英文的话)。
下面是一个更复杂的表达式:\(?0\d{2}[) -]?\d{8}
。
注:
“(”和“)”也是元字符,后面的分组节里会提到,所以在这里需要使用转义。
这个表达式可以匹配几种格式的电话号码
,像(010)88886666
,或022-22334455
,或02912345678
等。我们对它进行一些分析吧:首先是一个转义字符\(
,它能出现0次或1次(?
),然后是一个0
,后面跟着2个数字(\d{2}
),然后是)
或-
或空格
中的一个,它出现1次或不出现(?
),最后是8个数字(\d{8}
)。
注:
“
(
”和“)
”也是元字符,后面的[分组节](12. 分组.html)里会提到,所以在这里需要使用[转义](7. 字符转义.html)。