MySQL 与 Hive 中正则表达式字符转义的一个坑

提到正则表达式的转义,第一个念头就是加一个反斜杠 \

比如 . 在正则表达式中的含义就是匹配除 \n 之外的任何单个字符。

如果让你匹配在 Hive 或者 MySQL 的 SQL 语句中匹配像 4.2.5 这样的字符串,你会怎么做?

我的第一反应是:

[1-9]+\.[0-9]+\.[1-9]+

结果是错的!==!

事实上 . 的转义是 \\. 而不是 \.

有一个说法是 SQL 语句本身也是个字符串,交给程序处理的时候首先使用 \\\ 进行转义,然后用转义过的 \. 进行转义。

真是够绕的!

发表评论