解析“*” – 量词{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)%>