一些字符在正则表达式中具有一种含义,在其他语境下则具有另外一种完全不同的含义。例如,在正则表达式中,点 (.) 是一种特殊字符,用来匹配任一字符。在书写语言中,句点 (.) 用来表示句子的结束。在数学中,小数点 (.) 用来分隔数字的整数部分和小数部分。
正则表达式会先评估某个特殊字符在正则表达式语境下的含义:如果是点,正则表达式就会匹配任一字符。
比如,正则表达式 1. 可以匹配:
- 11
- 1A
正则表达式 1.1 可以匹配:
- 111
- 1A1
如果您能使用正则表达式来表示 IP 地址,那么就会取得出乎意料的效果。例如,正则表达式 0.0.0.0 可以匹配:
- 0102030
- 0a0b0c0
为了告诉正则表达式将原语境中的点看做 IP 地址各部分之间的分隔符,而不是用于匹配任一其他字符的特殊字符,您需要使用相应的标记,即反斜杠 (\)。当正则表达式遇到反斜杠时,就会从字面上解释后面的字符。用来匹配 IP 地址 0.0.0.0 的正则表达式应为:
0\.0\.0\.0
对任一特殊字符使用反斜杠,即可对其转义并使之按字面解释,例如:
- \\(对反斜杠转义)
- \[(对中括号转义)
- \{(对花括号转义)
- \.(对点转义)