为了突出显示输入字符串,我完成了以下解决方法
string input = "This is my text";
string pattern = "tex.";// Added Regx special charactor
string replacement = string.Format("<strong>{0}</strong>", "$0");
var result = Regex.Replace(input, pattern,replacement , RegexOptions.IgnoreCase);
以上结果为This is my <strong>text</strong>
我希望仅在模式为'text'而非'tex。'或任何特殊字符时才匹配输入。 有没有办法做同样的事情?
在这里,我添加了dotnetfiddle链接以便更好地理解 https://dotnetfiddle.net/8AR0n9
为了更好地理解
我期待逃避特殊的charactors行为 Regx.Replace或其他任何替代方法吗?
答案 0 :(得分:1)
似乎太明显了,所以我可能会遗漏一些东西,但只需将您的模式更改为您想要匹配的确切文本:
string input = "This is my text";
string pattern = "text";
string replacement = string.Format("<strong>{0}</strong>", "$0");
var result = Regex.Replace(input, pattern,replacement , RegexOptions.IgnoreCase);
答案 1 :(得分:1)
您可以使用Regex.Escape()
:
string input = "This is my text";
string pattern = "tex.";// Added Regx special charactor
string replacement = string.Format("<strong>{0}</strong>", "$0");
var result = Regex.Replace(input, Regex.Escape(pattern), replacement, RegexOptions.IgnoreCase);
在创建模式时也可以完成功能的放置:
string input = "This is my text";
string pattern = Regex.Escape("tex.");// Added Regx special charactor
string replacement = string.Format("<strong>{0}</strong>", "$0");
var result = Regex.Replace(input, pattern, replacement, RegexOptions.IgnoreCase);
如果您在完成pattern
功能后打印Regex.Escape
,则会看到它已成为tex\.
答案 2 :(得分:0)
因为句号(&#39;。&#39;)代表任何字符。所以我认为,你应该指出什么能够跟随你的&#39; tex&#39;。
这是我的尝试。
string input = "This is my text, tex.";
string pattern = "tex([a-zA-Z]\\d*|\\d[a-zA-Z]*)";
string replacement = string.Format("<strong>{0}</strong>", "$0");
var result = Regex.Replace(input, pattern,replacement , RegexOptions.IgnoreCase);
Console.WriteLine(result);
结果;
This is my <strong>text</strong>, tex.
希望得到这个帮助。
答案 3 :(得分:0)
如果我找到了你需要的东西
tex[a-zA-Z] // if there is only one char expected
或
tex[a-zA-Z]* // if more than one char is expected