2

我正在尝试清理一些最初是用户输入的地址目录以供以后处理。删除了数字和特殊字符后,现在我有了如下字符串:

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 上)

4

1 回答 1

0

尝试

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

希望这将满足您的需求,问候,卡斯滕

于 2012-12-19T13:58:11.117 回答