正则表达式.Net
在这种情况下,如果字母O出现在字符串的前4个字符中,我希望正则表达式将其更改为数字0 示例:BO1A6987应更改为B01A6987 我正在使用O?也许你可以试试:正则表达式.Net,.net,regex,substitution,ignore,.net,Regex,Substitution,Ignore,在这种情况下,如果字母O出现在字符串的前4个字符中,我希望正则表达式将其更改为数字0 示例:BO1A6987应更改为B01A6987 我正在使用O?也许你可以试试: ^((?:SPOC)?.{0,3})O 并替换为${1}0。在线查看 ^-起锚。 -打开第一捕获组: :-打开非捕获组: SPOC-按字面意思匹配SPOC。 ? - 关闭非捕获组并将其设置为可选。 .{1,3}-捕获0-3个字符,而不是换行符。 -关闭第一捕获组。 O-捕获大写的O。 替换是通过对第一个捕获组的反向引用完成的,但您
^((?:SPOC)?.{0,3})O
并替换为${1}0。在线查看
^-起锚。
-打开第一捕获组:
:-打开非捕获组:
SPOC-按字面意思匹配SPOC。
? - 关闭非捕获组并将其设置为可选。
.{1,3}-捕获0-3个字符,而不是换行符。
-关闭第一捕获组。
O-捕获大写的O。
替换是通过对第一个捕获组的反向引用完成的,但您不能简单地使用$1,因为我们需要在后面加上一个零,引擎可能会认为您指的是第十个捕获组。因此,在背面参考周围使用花括号
您也可以参考.Net演示
编辑:
以上仅处理一次事件。我想,如果您想替换第一至第四位置的所有事件,或者如果是领先的SPOC,则替换第五至第八位置的所有事件,您可以尝试:
(?<=^(?:SPOC)?.{0,3})(?<!^SP(?=OC))O
其中:
?
^-起锚。
SP-按字面意思匹配SP。
?=-打开正向前瞻:
OC-按字面意思匹配OC。
-关闭正向前瞻。
-关闭负前瞻。
O-捕获大写的O。
现在简单地替换为零。查看.Net也许您可以尝试:
^((?:SPOC)?.{0,3})O
并替换为${1}0。在线查看
^-起锚。
-打开第一捕获组:
:-打开非捕获组:
SPOC-按字面意思匹配SPOC。
? - 关闭非捕获组并将其设置为可选。
.{1,3}-捕获0-3个字符,而不是换行符。
-关闭第一捕获组。
O-捕获大写的O。
替换是通过对第一个捕获组的反向引用完成的,但您不能简单地使用$1,因为我们需要在后面加上一个零,引擎可能会认为您指的是第十个捕获组。因此,在背面参考周围使用花括号
您也可以参考.Net演示
编辑:
以上仅处理一次事件。我想,如果您想替换第一至第四位置的所有事件,或者如果是领先的SPOC,则替换第五至第八位置的所有事件,您可以尝试:
(?<=^(?:SPOC)?.{0,3})(?<!^SP(?=OC))O
其中:
?
^-起锚。
SP-按字面意思匹配SP。
?=-打开正向前瞻:
OC-按字面意思匹配OC。
-关闭正向前瞻。
-关闭负前瞻。
O-捕获大写的O。
现在简单地替换为零。参见.Net另一个使用lookback的选项可以是: 断言字符串左边的开头不后跟SPOC并匹配任何字符0-3次,或者断言字符串左边的开头后跟SPOC并匹配任何字符0-3次 在断言匹配O之后
使用lookback的另一个选项可以是: 断言字符串左边的开头不后跟SPOC并匹配任何字符0-3次,或者断言字符串左边的开头后跟SPOC并匹配任何字符0-3次 在断言匹配O之后
我想我把我的regex和你的相比。。。呵呵。干得好。@JvdV你的模式也解决了这个问题:-我在玩lookback,来到了这个。我想我的正则表达式和你的相比被破坏了。。。呵呵。干得好。@JvdV您的模式也解决了这个问题:-我当时在玩lookback,来到了这个。