首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式用于标识包含在.cs文件中的Try-Catch和Try-Catch finally块

正则表达式用于标识包含在.cs文件中的Try-Catch和Try-Catch finally块
EN

Stack Overflow用户
提问于 2013-02-23 11:43:20
回答 3查看 800关注 0票数 0

嗨,我正在尝试创建一个应用程序,以帮助我切换出我的Catch-Block的测试内容,并将它们替换为生产内容。我能够读取我的文件并解析其内容,但是在创建regex(我还是个新手)以识别try-catch块时遇到了问题,因此我可以选择删除或更改catch块的内容。谁能帮我解决这个问题??

到目前为止,我有下面的表达式(根本不起作用)

代码语言:javascript
复制
try{*}catch(*){*)

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-02-23 11:55:49

您不能编写执行此操作的正则表达式,因为正则表达式can't be used to match nested patterns。这意味着它不能识别代码中出现右大括号和其他嵌套大括号的时间。您将需要一个解析器生成器,例如ANTLR,正如链接答案所建议的那样。

票数 3
EN

Stack Overflow用户

发布于 2013-02-23 15:31:08

我建议你看看微软正在开发中的Roslyn compiler。它的API应该可以让你完成你想做的任何事情。它目前正在预览中。

票数 1
EN

Stack Overflow用户

发布于 2013-02-23 19:13:56

我认为这会促使你找到一个解决方案:

代码语言:javascript
复制
try\s*\{[^{}]*([^{}]*\{[^{}]*\}[^{}]*)*[^{}]*\}\s*catch\s*\([^()]*(\([^()]*\))*\)\s*\{[^{}]*([^{}]*\{[^{}]*\}[^{}]*)*[^{}]*\}

try\s*匹配,后跟零个或多个空格。

\{[^{}]*([^{}]*\{[^{}]*\}[^{}]*)*[^{}]*\}匹配一个块({后跟除{和}之外的零个或多个字符,然后是零个或多个块,每个块前后都有任意数量的字符)

\s*catch\s*\([^()]*(\([^()]*\))*\)匹配catch前后的零个或多个空格,然后匹配括号()中的内容

类似于try块的\s*\{[^{}]*([^{}]*\{[^{}]*\}[^{}]*)*[^{}]*\}

注意:如果注释包含{s或}s,则可能会失败

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15036814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档