2017-06-25 249 views
0

幫助我解決我的正則表達式::正則表達式找到一個空白字符和非空白字符

(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' )) as reg 

我想要得到的結果是:

'#time 52' 
'#time20' 

如果我寫:(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' ))爲REG

結果:#time20

如果我寫:(REGEXP_SUBSTR(WORD, '#time\s[0-9]{1,2}' ))作爲REG

結果:#TIME 52

SQL查詢:

SELECT 
(REGEXP_SUBSTR(WORD, '#time\S[0-9]{1,2}' )) as reg 
FROM(
select 
'text #time 52 texttexttext #time20 text' as WORD 
from dual 
)tabl 

我怎樣才能解決這個問題?謝謝你的幫助!

+0

這個問題**要求**是什麼?不是**期望的結果**,而是導致結果的邏輯? – mathguy

回答

0

如果我理解正確的話,這是你想要的表情:「#TIME」和數字之間

select REGEXP_SUBSTR(WORD, '#time\s*[0-9]{1,2}') 

這將處理任何數量的空格(包括0)。如果您最多需要一個,請使用?而不是*

0

您是否在尋找確切的子字符串#text,然後是可選的空格,然後是一位或兩位數字?然後'#text\s?\d{1,2}'將工作。 ?表示可選。

您的'#text\S\d{1,2}'在這種情況下不正確;它允許並要求之間的非空格字符#text和一個或兩個數字。在您的示例中,它恰好匹配第一個數字,然後\d{1,2}與第二個數字匹配,但這只是巧合。它也會匹配#text+00#text123。但它會而不是匹配#text4(如果沒有後跟一個或兩個以上的數字)。

相關問題