2017-04-19 88 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返回第一個捕獲組的內容。

相關問題