Oracle Regex删除小字

时间:2012-12-14 20:31:10

标签: regex string oracle11g

我正在尝试清理一些原始用户输入的地址目录,以便以后处理。删除了数字和特殊字符后,现在我有了类似的字符串:

ST SOMETHING SOMEWHERE H BL D S

所以,ST代表街道,H房子等等。不要试图在这里超精确,所以我认为只删除3个字符以下的东西就足够了,但是我似乎无法在Oracle中找到正确的正则表达式。试过了:

SELECT
    regexp_replace('ST SOMETHING SOMEWHERE H BL D S','[\ ^]\w{1,3}[\ $]', ' ')
FROM dual;

产生:

ST SOMETHING SOMEWHERE BL S

我希望我只有

SOMETHING SOMEWHERE
有人能借给我一把手吗?

(我在oracle 11g上)

1 个答案:

答案 0 :(得分:0)

SELECT
  regexp_replace(
      '<raw string>'
     ,'(^|[[:space:]])([^[:space:]]{1,3}[[:space:]]+)*[^[:space:]]{1,3}([[:space:]]|$)'
     , ' '
  )
FROM dual;

希望能满足您的需求,问候,汽车