C# Regex删除try&;抓住
我已经试着学习过几次正则表达式,但从来没有真正做到过。我将非常感谢regex提供的帮助,以查找并替换以下内容:C# Regex删除try&;抓住,c#,.net,regex,C#,.net,Regex,我已经试着学习过几次正则表达式,但从来没有真正做到过。我将非常感谢regex提供的帮助,以查找并替换以下内容: #Any code try { #Any code } catch (Exception ex) { throw new ExceptionHandler("", ExceptionType.UnexceptedException, ExceptionSeverity.Error, null, "", e
#Any code
try
{
#Any code
}
catch (Exception ex)
{
throw new ExceptionHandler("", ExceptionType.UnexceptedException, ExceptionSeverity.Error, null, "", ex);
}
最困难的部分是如何让标签和空格的变化发挥作用
它应该只匹配上面的代码,而不匹配其他代码。您可以使用此代码:
try\s+\{(.*?)\s+\}\s+catch\s*\(.*?\)\s+\{\s+throw new ExceptionHandler\("", ExceptionType.UnexceptedException, ExceptionSeverity.Error, null, "", ex\);\s+\}
但是如果在另一个try/catch
块中有一个try/catch
块,它将失败。你可以试试
注意:在大规模替换之前保留备份。您可以尝试以下正则表达式:
try\s*?\{\s*?(.+)\s*?\}\s*?catch\s+?\(\s*?Exception\s*?ex\s*?\)\s*?\{\s*?(.+)\s*?\}
为什么有了5k rep,你问了一个没有显示任何搜索努力的问题?你读过我的帖子吗?“我已经试着学习regex好几次了”。高代表性是否意味着我了解正则表达式?这不可能用正则表达式可靠地做到。如果你的正则表达式风格(你没有指定)支持递归,你可以得到一个快速而肮脏的解决方案,但是如果你的代码中有可能包含关键字、大括号或其他相关语法元素的注释或字符串,那么这很可能会在你面前爆炸。我们谈论的是什么样的环境?编辑如果是这样的话,哪一个?也许可以工作,但是在某个地方有一个备份,以防万一。谢谢,当使用带有“使用正则表达式”的快速查找工具时,它说它什么也找不到?@Banshee您确实检查了正则表达式选项,是吗?它是哪一个IDE?当我尝试Find all时,它找到了4个IDE,而这些IDE在try和catch之间根本没有任何代码。已将其设置为整个解决方案。嗯,我会检查它,我使用的是Visual Studio 2015。它适用于Sublime文本,但在VS2015中似乎失败了。我来看看女妖