忽略正则表达式搜索中的模式错误,不要使搜索崩溃

Posted

技术标签:

【中文标题】忽略正则表达式搜索中的模式错误,不要使搜索崩溃【英文标题】:Ignore pattern errors in a regex search and do not crash the search 【发布时间】:2021-12-15 08:54:33 【问题描述】:

我正在开发一个正则表达式搜索和替换程序,并希望有一个实时预览,可以立即显示任何更改。

我的问题是,例如,当我打开一个“[”括号时,程序在逻辑上崩溃了,因为 Regex 期望一个括号被关闭。当然,在搜索过程中可能会出现程序崩溃的其他错误。

如果模式错误,我想停止搜索并显示错误消息。

有谁知道在 C# 中使用“IF”查询的解决方案,例如,在执行正则表达式搜索之前检查它是否有效?

或者我怎样才能不崩溃?

using System.Text.RegularExpressions;

public string UseRegex(string input, string search, string replace)

    if (???)
    
        string result = Regex.Replace(input, search, replace);
        return result;
    
    else
    
        return "error";
    

【问题讨论】:

【参考方案1】:

试试这个:

public string UseRegex(string input, string search, string replace)

   try
   
      string result = Regex.Replace(input, search, replace);
      return result;
   
   catch
   
      return input;
   

【讨论】:

它毕竟工作了,当心调试程序,它似乎没有正确使用 try/catch.. TY

以上是关于忽略正则表达式搜索中的模式错误,不要使搜索崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何忽略正则表达式主题字符串中的空格?

05正则表达式

搜索正则表达式时忽略子节点

如何使用正则表达式搜索忽略 NSPredicate 的某些字符?

在 std::string 上执行正则表达式搜索和替换

文本处理工具grep常用命令