你能解释为什么我从这三个正则表达式得到不同的结果吗?我期待这三个中的第一个输出。
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
由于
答案 0 :(得分:1)
.*
将匹配任何出现零到无限次的角色。
[A-Za-z ]*
将匹配字符A-Z,a-z和空格,但不匹配“,”。正则表达式只匹配逗号之前的部分,因为它将(贪婪地)匹配与正则表达式匹配的第一次出现。
[[:alpha:][:space:]]*
将匹配字母字符(A-Z& a-z)和空格字符。这意味着它将与上面相同,但它也会匹配制表符和换行符等。
如果您想在简单地将,
添加到角色类之后包含逗号和文本。
[A-Za-z, ]*