2011-02-28 53 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

相关问题