回答

收藏

             &

技术问答 技术问答 443 人阅读 | 0 人回复 | 2023-09-13

}~] $'但是没有骰子,这将返回空结果集(尽管我特别添加了%,$,and #字符的Name行)字段。6 z: I, g0 M2 q4 Z
                                                                , q2 L" [2 O) b& C- W5 Y; d" @
    解决方案:                                                                , t+ N6 A% u" H( Q& R! w
                                                                第一个问题似乎是^和$符号(Mike C总结的速度比我为什么要快…)7 m! K$ Y  x1 v( X7 a, ~: U
但我也看到了转义问题:一切regexp表示某些内容的特殊字符应为 逃脱了    特别是放在[],所以[,],^,-, A! o# u  e* K% ^  k3 C9 D! }, A
结论在正则表达式文档中有详细说明:
: C5 ~/ k, p# t: N) }方括号表达式是用 []包括的字符列表。它通常与列表中的任何单个字符相匹配(但请参见下面)。1 ^7 n% ^3 v- ~# F6 U& I. i3 a
若列表为 ^一开始,它匹配任何单个字符(但请参见下面),而不是列表的其他部分。*如果列表中的两个字符使用’-‘分离是整理序列中两个字符(包括两个字符)之间完整字符的缩写,如ASCII中的[[0-9]匹配任何十进制数字。0 Z) f: @) P" f  T2 D$ Q5 W% O) a  O
共享两个范围中的一个端点是非法的(!),例如’ac-e’。范围非常依赖序列,可移植程序应避免依赖它们。
7 N" R3 U3 B, ?) {# E列表中应包含文字’]’,请将其设置为第一个字符(在可能的情况下)’^’之后)。
; B' h5 M( t- J0 @9 W3 j7 k要包含文字-请使其成为范围内的第一个或最后一个字符或第二个端点。
3 ~# I$ ?% [$ [* v8 o9 M6 n要将文字“-请将其纳入 [作为范围的第一个端点。’。]’使其成为整理元素(请参见下文)。
) ?! Q" u6 F8 l" ~  k% ~  P
除此之外’[‘除了一些组合(请参考下一段),所有其他特殊字符(包括所有其他特殊字符)’在方括号表达式中失去其特殊意义    。
3 Y& d' q. u9 u% I2 Q- E0 `编辑6 b$ ?+ \4 e1 y6 _1 \/ O
这是关于这个]字符的一些有趣的正则表达SQL小提琴. ^' G( J8 x7 w6 z! E5 b/ b
DDL:    创建表txt(txt varchar(200));( U6 F- m: Y: s& U3 K; H
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');查询:. m3 `9 ~7 Q. i6 S  N
匹配一组[和]字符的幼稚方法。语法上可以,但组是单个[字符,然后匹配多个]字符。) F6 Y6 p6 M/ [1 c7 D9 W* s
SELECT * FROM txt WHERE txt REGEXP 'ab[[]] cde';转义->相同???
0 u; e: ?0 b# g- JSELECT * FROM txt WHERE txt REGEXP 'ab[[\]] cde';两次转义->不起作用,组现在是a[和a\9 K5 f, {8 |! z3 L& x5 h3 \
SELECT * FROM txt WHERE txt REGEXP 'ab[[\\]] cde';打开并交换组中的一个封闭支架。这是我写的最奇怪的正则表达式-至此…( `" D# q1 S/ ?. H) S1 x4 p
SELECT * FROM txt WHERE txt REGEXP 'ab[][] cde';在一场奇怪的噩梦中,我会被这种正则表达式杀死(完全有效)。' O- e0 l1 @$ A! i
SELECT * FROM txt WHERE txt REGEXP 'ab[]wut?[] cde
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则