gpt4 book ai didi

mysql - MySQL 8中无效的regexp

转载 作者:行者123 更新时间:2023-11-29 15:59:55 25 4
gpt4 key购买 nike

我有此查询应排除一些字符(在方括号内,并以^开头)。所以我的查询是:

select col
from tbl
where col regexp '[^<\\\]*=[^<\\\]*(;|$)';


我有一个具有此值的记录:

PHPSESSID=b86698ec6da0879\cd5f4;
PHPSESSID=b86698ec6da0879cd;


查询返回OK(这表示正则表达式中存在问题。普通查询将返回不包含 \或0记录的其他记录。

最佳答案

请尝试使用2个反斜杠和4个(而不是3个)。这是逻辑:


某些代码层使用\作为转义字符。因此,\s用于“空白”,而不是s等。然后,反斜杠本身需要转义:\\
另一层代码需要转义。为了防止\s成为s,反斜杠需要转义,因此为\\s。对于\\,它只知道有两个反斜杠。因此,每个都需要转义:\\\\


例如,我已经看到这种情况发生在PHP和正则表达式中。

向后工作,我希望

[^<\\\]
-->
[^<\] -- after removing one layer
-->
[^<] -- after removing the second layer


如果您的3-bs正则表达式没有注意到反斜杠,那么我的分析可能是正确的。

4-bs版本:

[^<\\\\]  -->
[^<\\] -->
[^<\] -- (At this point `\` is just another char, as you wanted)

关于mysql - MySQL 8中无效的regexp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56266743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com