C# 使用特殊字符时分析错误
我想在结果集中突出显示我的搜索字符串。当我的搜索字符串为(Java、PHP)时,我的代码运行良好。 然而,当我的搜索字符串是(Java,C++)时,当代码执行这一行时,我会得到解析错误-C# 使用特殊字符时分析错误,c#,regex,parsing,C#,Regex,Parsing,我想在结果集中突出显示我的搜索字符串。当我的搜索字符串为(Java、PHP)时,我的代码运行良好。 然而,当我的搜索字符串是(Java,C++)时,当代码执行这一行时,我会得到解析错误- RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase); 我知道正则表达式将+和-视为特殊字符,因此当我的搜索字符串为(C++)时,我使用了一个单独的正则表达式,如下所述- if (Search_S
RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
我知道正则表达式将+
和-
视为特殊字符,因此当我的搜索字符串为(C++)时,我使用了一个单独的正则表达式,如下所述-
if (Search_String.Contains("++"))
{
RegExp = new Regex(@"C\+{2}");
}
我现在面临的问题是如何组合这两个正则表达式,以便在搜索字符串为(Java,C++)时,我的代码可以工作。
有人能建议解决这个解析错误吗
代码片段-
if (Search_String.Contains(","))
{
Search_String = Search_String.Replace(",", " ");
}
// Regular expression SetUp and add the Or operator.
RegExp = new Regex(Search_String.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
// Highlight keywords by calling the delegate each time the keyword is found.
return RegExp.Replace(textInfo.ToTitleCase(InputTxt), new MatchEvaluator(ReplaceKeyWords));
public string ReplaceKeyWords(Match m)
{
return "<span class=highlight>" + m.Value + "</span>";
}
if(搜索字符串包含(“,”))
{
搜索字符串=搜索字符串。替换(“,”,“”);
}
//正则表达式设置并添加Or运算符。
RegExp=new Regex(Search_String.Replace(“,“|”).Trim(),RegexOptions.IgnoreCase);
//通过在每次找到关键字时调用代理来突出显示关键字。
返回RegExp.Replace(textInfo.ToTitleCase(inputxt),新的MatchEvaluator(ReplaceKeyWords));
公共字符串替换关键字(匹配m)
{
返回“+m.值+”;
}
您正在查找Regex.Escape()
,它将转义输入字符串,以便正则表达式引擎将其视为文本。您正在查找Regex.Escape()
,它将转义输入字符串,以便正则表达式引擎将其视为文本。是您正在查找的内容。当我的搜索字符串(Java.C++),我需要做哪些修改才能通过下面的代码行--//正则表达式设置并添加Or运算符.RegExp=new Regex(Search_String.Replace(“,”).Trim(),RegexOptions.IgnoreCase);这就是您要查找的内容。当我的搜索字符串为(Java.C++)时,我需要做哪些修改才能通过下面的代码行--//正则表达式设置并添加Or运算符。RegExp=new Regex(Search_String.Replace(“,“|”).Trim(),RegexOptions.IgnoreCase);感谢您的响应。我正在尝试实现Regex.Excape(),但是我无法通过解析错误。你能给我举个例子吗?我使用了下面的代码,但它不起作用——返回Regex.Escape(Search\u Str.Replace(“,“|”).Trim(),@“c\++”,“${0}”,RegexOptions.IgnoreCase))@user2619042:Regex.Escape
对所有特殊字符进行转义,使Regex引擎将其视为纯文本。其中包括|
字符。您只希望转义要作为文本处理的字符。因此,您希望在插入|
s之前转义。恐怕我仍然无法获取此信息。设置正则表达式或在return语句中是否需要使用regex.escape()?你能给我举个我能想象的例子吗?如果我的搜索字符串是(Java,C++),我想返回Java | C++,感谢您的回复。我正在尝试实现Regex.Excape(),但是我无法通过解析错误。你能举个例子让我理解吗?我使用了下面的代码,但它不起作用——返回Regex.Escape(Search_Str.Replace(“,“|”).Trim(),@“c\++”,“${0}”,RegexOptions.IgnoreCase))@user2619042:Regex.Escape
对所有特殊字符进行转义,使Regex引擎将其视为纯文本。其中包括|
字符。您只希望转义要作为文本处理的字符。因此,您希望在插入|
s之前转义。恐怕我仍然无法获取此信息。设置正则表达式或在return语句中是否需要使用regex.escape()?你能给我举个我能想象的例子吗?如果我的搜索字符串是(Java,C++),我想返回Java | C++