首页 新闻 会员 周边

C# 中 Regex.Replace 替换时是否有必要先用 IsMatch 检查

0
悬赏园豆:30 [待解决问题]

场景是关键词过滤,绝大多数内容都没有对应的关键词,请问 Regex.Replace 替换时是否有必要先用 IsMatch 检查

if (_regexKeywords.IsMatch(text))
{
    text = _regexKeywords.Replace(text, "***");
}
dudu的主页 dudu | 高人七级 | 园豆:23787
提问于:2026-01-22 11:29
< >
分享
所有回答(3)
0

没这个必要吧,IsMatch内部一样需要通过正则匹配,这么搞的话岂不是要搞2次,我所接触的业务直接Replace就够了。

都是机缘 | 园豆:4317 (老鸟四级) | 2026-01-22 14:05

绝对大多数是匹配不上的情况

支持(0) 反对(0) dudu | 园豆:23787 (高人七级) | 2026-01-22 21:16
0

Replace 内部是调用了 Match 的,所以没有必要

huiyuanai709 | 园豆:527 (小虾三级) | 2026-01-22 14:30

通过 SO 上这个问题 Should i use Regex.IsMatch before running Regex.Replace 的回答知道,.NET Framework 中的确在 Replace 之前调用了 IsMatch

支持(0) 反对(0) dudu | 园豆:23787 (高人七级) | 2026-01-22 21:28

.NET 10 对应的实现代码

支持(0) 反对(0) dudu | 园豆:23787 (高人七级) | 2026-01-22 21:37
0

用实际数据简单测试了一下,对于没有对应关键词的文本,多数情况下 IsMatch 会比 Replace 快一些,但相差不大

dudu | 园豆:23787 (高人七级) | 2026-01-22 21:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册