Regex.Replace()
方法时,失败。 我该怎么办呢?
Replace.Method (String, String, MatchEvaluator, RegexOptions)
我尝试代码
<%# Regex.Replace( (Model.Text ?? "").ToString(), patternText, "<b>" + patternText + "</b>", RegexOptions.IgnoreCase | RegexOptions.Multiline)%>
答案 0 :(得分:36)
您是否尝试仅使用字符串"*"
作为正则表达式?至少这是导致你的错误的原因:
PS Home:\> "a" -match "*"
The '-match' operator failed: parsing "*" - Quantifier {x,y} following nothing..
At line:1 char:11
+ "a" -match <<<< "*"
字符*
在正则表达式中是特殊的,因为它允许前面的标记出现零次或多次。但实际上必须有一些先于它的东西。
如果要匹配文字星号,请使用\*
作为正则表达式。否则,您需要指定可能重复的。例如,正则表达式a*
连续匹配任意内容或任意多个a
。
答案 1 :(得分:13)
您的正则表达式中似乎只有一个"*"
。这是不正确的。 "*"
并不意味着“任何东西”(如文件规范中所述),但“之前的内容可以重复0次或更多次”。
如果你想要“任何东西”,你必须写".*"
。 "."
表示“任何单个字符”,然后重复。
修改强>:
如果您使用其他量词,则会发生同样的情况:"+"
,"?"
或"{n,m}"
(其中n和m是指定下限和上限的数字)。
可能会解释您收到的文本或错误消息。
答案 2 :(得分:1)
谢谢,
我修好了这个
<%# Regex.Replace( (Model.Text ?? "").ToString(), Regex.Escape(patternText), "<b>" + patternText + "</b>", RegexOptions.IgnoreCase | RegexOptions.Multiline)%>