提到正则表达式的转义,第一个念头就是加一个反斜杠 \
。
比如 .
在正则表达式中的含义就是匹配除 \n
之外的任何单个字符。
如果让你匹配在 Hive 或者 MySQL 的 SQL 语句中匹配像 4.2.5
这样的字符串,你会怎么做?
我的第一反应是:
[1-9]+\.[0-9]+\.[1-9]+
结果是错的!==!
事实上 .
的转义是 \\.
而不是 \.
。
有一个说法是 SQL 语句本身也是个字符串,交给程序处理的时候首先使用 \\
对 \
进行转义,然后用转义过的 \
对 .
进行转义。
真是够绕的!