在 MySql(我使用的是 5.1.48)中,以下正则表达式返回true
ie 1
。
SELECT '10-5' REGEXP '10-5' as temp;
SELECT '10/5' REGEXP '10/5' as temp;
SELECT '1*5' REGEXP '1*5' as temp;
然而,以下表达式返回false
ie 0
。
SELECT '10+5' REGEXP '10+5' as temp;
SELECT '10*5' REGEXP '10*5' as temp;
要在正则表达式中使用特殊字符的文字实例,请在其前面加上两个反斜杠 (\) 字符。MySQL 解析器解释其中一个反斜杠,而正则表达式库解释另一个。
转义+
and*
在前面两个语句中返回true
ie1
如下。
SELECT '10+5' REGEXP '10\\+5' as temp;
SELECT '10*5' REGEXP '10\\*5' as temp;
如果是这种情况,那么为什么*
在以下语句(第一个片段中的最后一个)中不需要转义?
SELECT '1*5' REGEXP '1*5' as temp;
它返回true
ie1
而不转义*
,并且以下类似的内容(第二个片段中的最后一个)返回false
.
SELECT '10*5' REGEXP '10*5' as temp;
它需要*
逃脱。为什么?