正则表达式-匹配特殊字符
匹配特殊字符
.字符在正则表达式里有着特殊的含义。如果模式里需要一个.,就要想办法来告诉正
则表达式你需要的是.字符本身而不是它在正则表达式里的特殊含义。为此,你必须在.的
前面加上一个\(反斜杠)字符来对它进行转义。\是一个元字符(metacharacter,表示
“这个字符有特殊的含义,而不是字符本身含义”)。
我们再来验证一次刚才的例子,这次我们使用了\对.进行转义:
文本
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apac1.xls
europe2.xls
na1.xls
na2.xls
sa1.xls
正则表达式
.a.\.xls
结果
sales1.xls
orders3.xls
sales2.xls
sales3.xls
apac1.xls
europe2.xls
(na1.xls)
(na2.xls)
(sa1.xls)
分析
.a.\.xls解决了问题。第一个.匹配n(在前两个匹配结果里)或s(
在第3个匹配结果里),第2个.匹配1(在第1个和第3个匹配结果里)或2(
在第2个匹配结果里)。接下来,\.匹配文件名与扩展名之间的分隔符.本身
,最后的xls匹配它本身。(事实上,即使没有最后面的xls,这次搜索的结
果也会与我们预想的一样;加上xls可以避免匹配到诸如sa3.doc之类的文件
名。)
在正则表达式里,\字符永远出现在一个有着特殊含义的字符序列的开头
,这个序列可以由一个或多个字符构成。刚才看到的是\.序列,后面还会看到
更多使用了\字符的例子。
注意:如果需要搜索\本身,就必须对\字符进行转义;相应的转义序列是
两个连续的反斜杠字符\\。
提示:我们刚才说到的,.可以匹配任何一个字符,这一说法并非绝对正确
。在绝大多数的正则表达式实现利里,.只能匹配除换行符以外的任何单个字符。