gpt4 book ai didi

regex - VB/正则表达式 : Replace character with conditions on preceding and following characters

转载 作者:行者123 更新时间:2023-12-01 09:36:35 26 4
gpt4 key购买 nike

我想将前面没有空格的任何零和零或任意多个数字以及后面没有零或任意数量的数字和 + 或 - 变成一个点。

到目前为止,我已经成功地用一个点替换了每个零后跟零或任意数量的数字和一个 + 或 - ,使用这个:

Str1 = " 0 0c000c0+c0-c 10c0c"
Str2 = Regex.Replace(Str1, "(?!\s+\d*)0(?!\d*[\+\-])", ".")

这会返回“. .c...c0+c0-c 1.c.c”,所以最后一部分有效,第一部分无效。

如果遵循以下模式,我希望替换零:

<stuff><not a space followed by numbers>0<other numbers not followed by a plus or minus><more stuff>

例子:

" 100c" >>> " 100c"
"c00c10+" >>> "c..c10+"
" 0 0cc0c0-" >>> " 0 0cc.c0-"

我怎样才能让它工作?

最佳答案

您需要使用后视,而不是前视。使用

(?<!\s\d*)0(?!\d*[+-])
^^^^^^^^^

参见 regex demo .

不需要使用+\s 之后在回顾中,一个空白检查就足够了。

请注意,无需转义 +在字符类中,无需转义 -如果它在字符类的结尾/开头。

详情

  • (?<!\s\d*) - 如果紧邻当前位置左侧有空格和 0+ 位数字,则否定后视会导致匹配失败
  • 0 - 一个零
  • (?!\d*[+-]) - 如果有 0+ 个数字后跟 -,则否定前瞻会导致匹配失败或 +紧靠当前位置的右侧。

关于regex - VB/正则表达式 : Replace character with conditions on preceding and following characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com