我想用另一个数字替换是方括号的字符串。我正在使用正则表达式替换方法。
样本输入:
这是[测试]版本。
必需的输出(将“ [test]”替换为1.0):
这是1.0版本。
现在正则表达式不会替换特殊字符。下面是我尝试过的代码:
string input= "This is [test] version of application.";
string stringtoFind = string.Format(@"\b{0}\b", "[test]");
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
输入和stringtoFind变量中可能有任何特殊字符。
您必须在这里说明两件事:
\
符号进行转义,当将动态文字文本作为变量传递给正则表达式时,最好使用Regex.Escape
方法完成\b
,因为此构造的含义取决于当前上下文。您可能会使用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)";
^^^^^^ ^^^^^
在我看来,这与您要求的是最接近的:
string input = "This is [test] version of application.";
string stringtoFind = Regex.Escape("[test]");
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
输出This is 1.0 version of application.
。
但是,在这种情况下,只需执行此操作即可:
string input = "This is [test] version of application.";
Console.WriteLine(input.Replace("[test]", "1.0"));
它做同样的事情。
我的猜测是,这个简单的表达可能会起作用:
\[[^]]+\]
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"\[[^]]+\]";
string substitution = @"1.0";
string input = @"This is [test] version";
RegexOptions options = RegexOptions.Multiline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
this demo右上角的面板上解释了该表达式,如果您想对其进行探索/简化/修改,并且在this link中,您可以逐步观察它如何与某些样本输入匹配。喜欢。
\] // Matches the ]
\[ // Matches the [
这里是备忘单,您将来可以使用https://www.rexegg.com/regex-quickstart.html#morechars
string input = "This is [test] version of application.";
string stringtoFind = string.Format(@"\[[^]]+\]", "[test]");
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
Console.ReadKey();
https://www.regexplanet.com/share/index.html?share=yyyyujzkvyr =>演示
您应该逃脱括号并卸下\b
:
string input= "This is [test] version of application.";
string stringtoFind = string.Format("{0}", @"\[test\]");
Console.WriteLine(Regex.Replace(input, stringtoFind, "1.0"));
This is 1.0 version of application.
\b
匹配NOT匹配空格。 \b
匹配单词开头或结尾的空字符串。也许您在寻找\s
。