栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL匹配特殊字符正则表达式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL匹配特殊字符正则表达式

第一个问题似乎是

^
$
符号(Mike C总结的速度比我为什么要快…)

但是我也看到了转义问题:所有在regexp中表示某些内容的特殊字符都应为 逃脱了 特别是放置在

[]
,所以
[
]
^
-

结论在正则表达式文档中有详细说明:

方括号表达式是用“ []”括起来的字符列表。它通常与列表中的任何单个字符匹配(但请参见下文)。

  • 如果列表以“ ^”开头,则它匹配任何单个字符(但请参见下文),而不是列表的其余部分。

*如果列表中的两个字符用’-‘分隔,则这是整理序列中这两个字符之间(包括两个字符)的完整字符的缩写,例如ASCII中的[[0-9]]匹配任何十进制数字。

  • 两个范围共享一个端点是非法的(!),例如’ac-e’。范围非常依赖于序列,并且可移植程序应避免依赖它们。

  • 要在列表中包含文字’]’,请将其设为第一个字符(在可能的’^’之后)。

  • 要包含文字“-”,请使其成为范围的第一个或最后一个字符或第二个端点。

  • 要将文字“-”用作范围的第一个端点,请将其括在“ [。”中。和’。]’使其成为整理元素(请参见下文)。

除了这些以及使用’[‘的某些组合(请参阅下一段)之外, 所有其他特殊字符(包括’')在方括号表达式内都失去其特殊意义

编辑
这是有关该

]
字符的一些有趣正则表达式的SQL小提琴

DDL: 创建表txt(txt varchar(200));

insert into txt values ('ab[]cde');insert into txt values ('ab[cde');insert into txt values ('ab]cde');insert into txt values ('ab[]]]]cde');insert into txt values ('ab[[[[]cde');insert into txt values ('ab\]]]]cde');insert into txt values ('ab[wut?wut?]cde');

查询:

幼稚的方法来匹配一组

[
]
字符。从语法上讲可以,但是该组是单个
[
字符,然后与多个
]
字符匹配。

SELECt * FROM txt WHERe txt REGEXP 'ab[[]]+cde';

转义->相同???

SELECt * FROM txt WHERe txt REGEXP 'ab[[]]+cde';

两次转义->不起作用,组现在是a

[
和a

SELECt * FROM txt WHERe txt REGEXP 'ab[[\]]+cde';

将封闭支架与组中的一个打开交换。这是我写过的最奇怪的正则表达式-至此…

SELECt * FROM txt WHERe txt REGEXP 'ab[][]+cde';

我会在一个怪异的噩梦中被这种(完全有效的)正则表达式杀死,我认为:

SELECt * FROM txt WHERe txt REGEXP 'ab[]wut?[]+cde';


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号