正则表达式:从字符串中替换字符'0'

时间:2011-10-18 20:30:48

标签: regex

我有一个像'00122021300123024'

这样的字符串

我只想删除单个'0'而不是'00'意味着输出应该是'001222130012324'

[注意:我正在使用ORACLE 11g regexp_replace功能]

3 个答案:

答案 0 :(得分:1)

如果您的语言支持look-aheads and -behinds,则可以使用:

(?<!0)0(?!0)

答案 1 :(得分:1)

无需环顾四周,搜索([123456789]|^)0([123456789]|$)并替换$ 1 $ 2,其中$ 1是第一个捕获组,$ 2是第二个捕获组(或\ 1 \ 2)。

对于Oracle SQL:

select regexp_replace('00122021300123024', '([123456789]|^)0([123456789]|$)', '\1\2') from dual;

未经测试但应该可以使用。

答案 2 :(得分:0)

不确定你的编码语言是什么,但是如何在python中实现它:

In [1]: import re
In [2]: x = "00122021300123024"
In [3]: print x
00122021300123024

In [4]: x_after_replace = re.sub("(?<!0)0(?!0)", "", x)

In [5]: print x_after_replace
001222130012324