gpt4 book ai didi

c# - 当单词以方括号等特殊字符开头或结尾时,单词边界不匹配

转载 作者:太空狗 更新时间:2023-10-29 23:04:56 24 4
gpt4 key购买 nike

我想用另一个数字替换方括号中的字符串。我正在使用正则表达式替换方法。

示例输入:

This is [test] version.

所需输出(用 1.0 替换“[test]”):

This is 1.0 version.

目前正则表达式并未替换特殊字符。下面是我试过的代码:

 string input= "This is [test] version of application.";

string stringtoFind = string.Format(@"\b{0}\b", "[test]");

Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));

input 和 stringtoFind 变量中可能有任何特殊字符。

最佳答案

你必须在这里考虑两件事:

  • 特殊字符必须使用文字 \ 符号进行转义,当您将动态文字文本作为变量传递给正则表达式时,最好使用 Regex.Escape 方法完成此操作
  • 不可能依赖单词边界 \b ,因为该结构的含义取决于直接上下文。

您可以使用 dynamic adaptive word boundaries(参见 my YT video about these word boundaries):

string input= "This is [test] version of application.";
string key = "[test]";
string stringtoFind = $@"(?!\B\w){Regex.Escape(key)}(?<!\w\B)";
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));

您还可以使用具有明确单词边界的 Regex.Escape (?<!\w)(?!\w) :

string input= "This is [test] version of application.";
string key = "[test]";
string stringtoFind = $@"(?<!\w){Regex.Escape(key)}(?!\w)";
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));

请注意,如果要替换包含空格的键字符串,请使用

string stringtoFind = $@"(?<!\S){Regex.Escape(key)}(?!\S)";
^^^^^^ ^^^^^

关于c# - 当单词以方括号等特殊字符开头或结尾时,单词边界不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56964507/

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