我想在字符串中获取第二个单词,如下面的代码所示,我正在尝试获取函数的名称unstring
。但是我需要一个正则表达式,它将第二个字提取给我,直到'('或遇到空格。
SELECT REGEXP_SUBSTR('FUNCTION unstring(i_string VARCHAR2', '(\S*)(\S)', 1, 2)
FROM DUAL;
使用此正则表达式,我得到unstring(i_string
作为结果。我正在尝试获取函数的名称,因此函数没有必要有参数,因此'('或''遇到条件。
答案 0 :(得分:2)
使用\w+
匹配单个词,\s+
匹配两个词之间的空格。捕获第二个:
select regexp_substr('FUNCTION unstring(i_string VARCHAR2','^\w+\s+(\w+)', 1, 1, NULL, 1) from dual
模式意味着:
^
- 字符串锚的开始\w+
- 1个或多个字母/数字/ _
\s+
- 1+空格(\w+)
- 捕获第1组,匹配1个字母字母(字母/数字/ _
)最后一个1
参数告诉regexp_substr
返回第一个捕获组的内容。