Regex 正则表达式:替换char';0';一串

Regex 正则表达式:替换char';0';一串,regex,Regex,我有一个类似于'0012202130012324' 我只想删除单个'0'而不是'00'意味着输出应该是'00122213012324' [注意:我正在使用ORACLE 11g regexp_replace函数]如果您的语言支持,您可以使用: (?<!0)0(?!0) (?不环顾四周,搜索([123456789]|^)0([123456789]|$)并替换为$1$2,其中$1是第一个捕获组,$2是第二个捕获组(或\1\2) 对于Oracle SQL: select regexp_repla

我有一个类似于
'0012202130012324'

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

[注意:我正在使用ORACLE 11g regexp_replace函数]

如果您的语言支持,您可以使用:

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

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

对于Oracle SQL:

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

未经测试,但应能正常工作。

不确定您的编码语言,但以下是如何在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
[1]中的
:导入re
在[2]中:x=“0012202130012024”
在[3]中:打印x
00122021300123024

[4]中:替换后的x_=re.sub(“(?关于三重0呢?例如000你能更具体地说明你使用的是什么语言吗?我使用的是ORACLE 11g regexp_replace。你能解释一下吗。它对我不起作用。@vikash:我不知道他们使用的是什么regex风格,也不知道这个函数应该如何调用,所以不,我不能给你更多的信息。它可能非常有用很可能它们不支持lookaround,但是应该在文档的某个地方描述它(以及如何调用该函数)。寓意:始终从一开始就说明您正在处理的语言/regex味道。ORACLE 11g regexp|u replace不支持环顾四周。请参见下面的我的答案。不太值得单独回答,但更简洁的版本是
([1-9]|^)0([1-9]|$)
确实是:)忘记了破折号