2017-04-19 90 views
2

我想获取字符串中的第二个字,如下面的代码,我试图获取函数的名字unstring。但是我需要一个正则表达式“(”或遇到一个空间,直到取我的第二个字。获取字符串中的第二个字,直到'('或''遇到

SELECT REGEXP_SUBSTR('FUNCTION unstring(i_string VARCHAR2', '(\S*)(\S)', 1, 2) 
FROM DUAL; 

有了这个正则表达式,我得到unstring(i_string作为结果。我试图获取该函数的名称,所以它不是必要的功能有参数,因此'('或''遇到的条件。

+0

['(\ S +)\ s * \('](https://regex101.com/r/UbvyeH/1) – Tushar

+0

@Tushar它不起作用 – Varghese

+0

与@Tushar相同,除了它需要* \(S +)\ s * \(* – user2141046

回答

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返回第一个捕获组的内容。

相关问题