gpt4 book ai didi

regex - Oracle 正则表达式查询

转载 作者:行者123 更新时间:2023-12-01 10:14:52 26 4
gpt4 key购买 nike

我正在尝试学习 Oracle 中的正则表达式(更确切地说,这是我第一次尝试使用 RegEx 做任何事情)。

字符 ^ 在开头表示什么?文档提到

Use the caret and dollar sign to define patterns that match the start or end of a string.
^ defines that start of a string or column 1 of the string.

因此,通过使用 '^[*est]' 作为模式,我的理解是匹配任何以 -est 作为结尾的内容

但是,当我试了一下,

SQL> select 1 from dual where regexp_like('test','^[*est]');

1
----------
1

SQL>  select 1 from dual where regexp_like('best','^[*est]');

no rows selected

SQL>  select 1 from dual where regexp_like('fest','^[*est]');

no rows selected

然而,删除 ^,我们得到

SQL>  select 1 from dual where regexp_like('fest','[*est]');

1
----------
1

SQL>  select 1 from dual where regexp_like('best','[*est]');

1
----------
1

SQL> select 1 from dual where regexp_like('test','^[*est]');

1
----------
1

为什么会这样?为什么在第一种情况下,匹配发生在 `test' 而不是其他情况下?

最佳答案

select 1 from dual where regexp_like('best','^[*est]');

[] 在正则表达式中表示“任何列出的字符”

[] 中,星号失去了它的特殊含义,只表示星号。

上面的正则表达式匹配以 *est 开头的任何字符串(任何字符串开头后面列出的字符)。

要选择以 -est 结尾的单词,请使用:

select 1 from dual where regexp_like('nest','est$')

表示“字符串 est 后跟字符串结尾 ($)”

关于regex - Oracle 正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043129/

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