regexp_substr结果说明

时间:2013-07-21 13:44:11

标签: regex

你能解释为什么我从这三个正则表达式得到不同的结果吗?我期待这三个中的第一个输出。

SQL> select regexp_substr(input,'.*') sub from test_regexp;
SUB
------------------------------------------------------------------------------
Understanding greediness, not the Enron kind

SQL> select regexp_substr(input,'[A-Za-z ]*') sub from test_regexp;
SUB
------------------------------------------------------------------------------
Understanding greediness

SQL> select regexp_substr(input,'[[:alpha:][:space:]]*') sub from test_regexp;
SUB
------------------------------------------------------------------------------
Understanding greediness

由于

1 个答案:

答案 0 :(得分:1)

.*将匹配任何出现零到无限次的角色。

[A-Za-z ]*将匹配字符A-Z,a-z和空格,但不匹配“,”。正则表达式只匹配逗号之前的部分,因为它将(贪婪地)匹配与正则表达式匹配的第一次出现。

[[:alpha:][:space:]]*将匹配字母字符(A-Z& a-z)和空格字符。这意味着它将与上面相同,但它也会匹配制表符和换行符等。

如果您想在简单地将,添加到角色类之后包含逗号和文本。

[A-Za-z, ]*