我想用另一个数字替换是方括号的字符串。我正在使用正则表达式替换方法。
样本输入:
这是[测试]版本。
必需的输出(将“ [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"));
input和stringtoFind变量中可能有任何特殊字符。
答案 0 :(得分:3)
您必须在这里说明两件事:
\
来转义特殊字符,最好使用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)";
^^^^^^ ^^^^^
答案 1 :(得分:3)
\] // 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 =>演示
答案 2 :(得分:2)
我的猜测是,这个简单的表达可能会起作用:
\[[^]]+\]
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中,您可以观察它如何与某些示例输入步骤匹配一步一步,如果您喜欢。
答案 3 :(得分:2)
在我看来,这与您所要求的最接近:
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"));
它做同样的事情。
答案 4 :(得分:-1)
您应该放宽括号,并移除1. {
"requestDetails": {
"basicDetails": {
"firstName": "Something",
"lastName": "Something",
"emailAddress": "Something",
},
"addressDetails": {
"addLine1": "Something",
"addLine2": "Something",
"city": "Something",
"state": "Something",
"country": "Something",
}
},
"openDate": "2019-07-05T09:59:18.601Z",
}
2. {
"reqId": "0b5c7dd3931944b28f693ef8bf6fa2ad",
"requestDetails": {
"basicDetails": {
"firstName": "Something",
"lastName": "Something",
"emailAddress": "Something",
},
"addressDetails": {
"addLine1": "Something",
"addLine2": "Something",
"city": "Something",
"state": "Something",
"country": "Something",
}
},
"openDate": "2019-07-05T09:59:18.601Z",
}
:
\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
与单词开头或结尾的空字符串匹配。也许您在寻找\b
。