解析“*” – 量词{x,y}无效

我尝试使用Regex.Replace()方法时失败。 我该怎么办呢?

 Replace.Method (String, String, MatchEvaluator, RegexOptions) 

我试试代码

 <%# Regex.Replace( (Model.Text ?? "").ToString(), patternText, "" + patternText + "", RegexOptions.IgnoreCase | RegexOptions.Multiline)%> 

您是否尝试仅使用字符串"*"作为正则表达式? 至少这是导致你的错误的原因:

 PS Home:\> "a" -match "*" The '-match' operator failed: parsing "*" - Quantifier {x,y} following nothing.. At line:1 char:11 + "a" -match <<<< "*" 

字符*在正则表达式中是特殊的,因为它允许前面的标记出现零次或多次。 但实际上必须有一些先于它的东西。

如果要匹配文字星号,请使用\*作为正则表达式。 否则,您需要指定可能重复的内容。 例如,正则表达式a*连续匹配任何内容或任意多个s。

您的正则表达式中似乎只有一个"*" 。 这是不正确的。 "*"不表示“任何东西”(如文件规范中),但“前一个可以重复0次或更多次”。

如果你想要“任何东西”,你必须写".*""." 表示“任何单个字符”,然后重复。

编辑 :如果你自己使用其他量词,会发生同样的情况: "+""?""{n,m}" (其中n和m是指定下限和上限的数字)。

  • “*”与“{0,}”相同,
  • “+”与“{1,}”相同,
  • “?” 与“{0,1}”相同

这可能会解释您收到的文本或错误消息。

谢谢,

我这样修好了

 <%# Regex.Replace( (Model.Text ?? "").ToString(), Regex.Escape(patternText), "" + patternText + "", RegexOptions.IgnoreCase | RegexOptions.Multiline)%>