从字符串中删除前导字母字符

时间:2018-12-24 10:23:03

标签: regex oracle

我必须忽略字符串中的前导零,前导/尾随空格,前导字母字符。请帮助使用什么正则表达式。

例如: 字符串为123abc,则需要返回REGEXP_SUBSTR('abc123abc','([1-9]+[0-9]*)( *)$') 。 目前,我使用

{{1}}

但它为我返回null。

2 个答案:

答案 0 :(得分:1)

像这样吗?

SQL> with test (col) as
  2    (select 'abc123abc'  from dual union all
  3     select ' 1234ddc'   from dual union all
  4     select '0abcd'      from dual union all
  5     select '18858 '     from dual union all
  6     select 'ab123ab45'  from dual
  7    )
  8  select col, trim(regexp_replace(col, '^[[:alpha:]]+| |0')) result
  9  from test;

COL       RESULT
--------- ---------
abc123abc 123abc
 1234ddc  1234ddc
0abcd     abcd
18858     18858
ab123ab45 123ab45

SQL>

答案 1 :(得分:0)

消失, 正则表达式应该是这样。

此操作将删除所有前导空格,前导零。

查询示例:
SELECT REGEXP_SUBSTR('abc123abc','[1-9]+.*') from dual;

您可以看到我在这里尝试过的一些示例,此外,您还可以在这里进行更多测试。 https://regex101.com/r/zfohRB/1

正则表达式: '[1-9]+.*'

说明:
[1-9]-这将寻找开始的号码。不包括0。
+-量词+表示1或更多。
.-之后的意思。
*-表示0或更大。 (如果您认为数字后至少需要一些内容,可以用+代替。)

祝你好运