Regex 在某些情况下,正则表达式替换为零

Regex 在某些情况下,正则表达式替换为零,regex,string,replace,Regex,String,Replace,我正在尝试编写一个正则表达式语句,如果以下条件为真,它将替换所有0 示例字符串: 0,10,9A,0,0,20,0LD,0 将所有零更改为aT0 如果0前面有1-9,请不要更改它 如果第一个字符或最后一个字符为0,则将其更改为T0 如果零后面有字母,则将其更改为与之前相同的T0字母 上面的字符串可以是任意顺序,并且应该考虑delims(,)中可能的更改 因此,上面的字符串应该是: T0,10,9A,T0,T0,20,T0LD,T0 这就是我到目前为止所做的: 0(?=[A-Z]|[1-9

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

示例字符串:

0,10,9A,0,0,20,0LD,0
将所有零更改为a
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正在被替换,它们不应该被替换。

尝试使用否定的查找断言

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

(?您可以使用负回溯来执行此操作

(?<![1-9])0
(?
或者改变你目前的模式

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