Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式.Net_.net_Regex_Substitution_Ignore - Fatal编程技术网

正则表达式.Net

正则表达式.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。 替换是通过对第一个捕获组的反向引用完成的,但您

在这种情况下,如果字母O出现在字符串的前4个字符中,我希望正则表达式将其更改为数字0

示例:BO1A6987应更改为B01A6987

我正在使用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,来到了这个。