2011-02-28 51 views
0

我正試圖從自由文本中提取電話號碼。 單詞編號的一般格式爲'0800',後面跟着至少6個字母數字字符。 如果有多個單詞需要至少6個字母數字字符,則返回完整的單詞。我如何創建一個正則表達式來匹配總長度至少爲n的單詞?

的例子有:
'PH 0800 OASIS CLEARWATER' - 迴歸 '0800 OASIS CLEARWATER'
'免費電話0800 RaceRock TM' - 迴歸 '0800 RaceRock'
'電話:0800 7 5555 7' - 迴歸「 0800 7 5555 7'

我使用的是Oracle 10.2.0.3(10G)

歡呼

回答

0

以下的正則表達式應該工作:

(0800(\s*[a-zA-Z0-9]){6}[a-zA-Z0-9]*) 

它首先匹配0800,然後是6個字母數字字符,每個字符前可以有多個空格。在第六個字符後,您匹配其他字符,以獲取整個單詞。

確保使用^$,你當然希望它能夠有串在它前面,和之後。

+0

markijbema - 您發佈的expr中的一些錯誤,並且已設法重寫它,並使我的大多數測試用例正常工作0800 \ s *([[:alnum:] - \ s] {3,6})[[: alnum:] - ] * – user638494 2011-02-28 23:21:58

+0

@ user639494它將同情編輯您的更改到我的答案。這樣,如果有人從谷歌中找到這個頁面,他們會看到一個正確的解決方案。另外,如果您認爲它回答了您的問題,我會很感激您接受我的回答。 – markijbema 2011-02-28 23:24:11

+0

現在失敗的人是:「0800 7665 4 8任何大小或形狀」只返回「0800 7665 4」想要「0800 7665 4 8」和「免費電話0800 POOL 4 U」返回「0800 POOL 4「想要」0800 POOL 4 U「 – user638494 2011-02-28 23:24:32

相關問題