突出显示句子的特定单词

时间:2015-03-26 05:49:35

标签: c# regex

为了突出显示输入字符串,我完成了以下解决方法

 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或其他任何替代方法吗?

4 个答案:

答案 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