【发布时间】:2018-12-03 20:31:41
【问题描述】:
我有以下模式:
- 13 R 2
- 48 B / 5
- 42 乙
- 42B
- 303 框 15
- 303 Bte 15
- 303 Bt 15
并且只想得到以下结果(因为 Box 15、Bte 15 是箱号,而我只想要房子 nbr + 可能是附加到门牌号的字母):
- 13 R 2
- 48 B / 5
- 42 乙
- 42B
- 303
- 303
- 303 乙
这可以使用正则表达式吗?我尝试了以下方法:REGEXP_SUBSTR(my_string_variable, '^\d+(\s*\w$)?')。然而,这仅适用于模式 3-5,而不适用于前 2 个和最后一个模式。从 regex 中删除 $ 会错误地“剥离”模式 5 和 6 的第一个字母。
我基本上假设如果数字后面的字母超过1个字符,则它属于箱号。例如,BTE 是Boite 的法语缩写,意思是Box。我意识到如果门牌号有 2 个字母(例如:11 AA),这可能是无效的,但我不知道解决方案,我认为它不会发生太多。
【问题讨论】:
-
试试
^\d+(\s*(/\s*)?([[:upper:]]|\d+))*(\s|$)