正则表达式在某些实例中替换零

时间:2014-10-28 02:47:12

标签: regex string replace

我正在尝试编写一个正则表达式语句,如果满足以下条件,则将替换所有0

示例字符串:

0,10,9A,0,0,20,0LD,0

将所有零更改为T0

  • 如果0前面有1-9,则不要更改
  • 如果第一个字符或最后一个字符为0,则将其更改为T0
  • 如果零点在零之后有字母,则将其更改为T0之后的字母

上面的字符串可以是任何顺序,并且应该考虑delims(,)

中可能的变化

所以上面的字符串应该是:

T0,10,9A,T0,T0,20,T0LD,T0

这是我到目前为止所做的:

0(?=[A-Z]|[1-9])|0

这就是我得到的

T0,1T0,9A,T0,T0,2T0,T0LD,T0

问题是10,20,30,40,50,60,70,80,90正在被替换,他们不应该。

2 个答案:

答案 0 :(得分:2)

你可以使用Negative Lookbehind来做到这一点。

(?<![1-9])0

或者脱离目前的模式。

(?<![1-9])0(?=[A-Z1-9]?)

Live Demo

答案 1 :(得分:1)

尝试消极的lookbehind断言

"(?<![1-9])0"

http://www.regular-expressions.info/lookaround.html