VisualStudio使用正则表达式查找替换

VisualStudio使用正则表达式查找替换

2023年7月29日发(作者:)

VisualStudio使⽤正则表达式查找替换这⼏天在写DirectSound录⾳时,发现按照⽂档和查阅的资料写出的代码,在创建录⾳缓存时总是报⽆效的参数这个错误。我在想是不是因为⾳频格式未设置正确造成的,于是决定运⾏directx9的例⼦来看看究竟是什么情况。但编译时却发现,在win10下的dx9例⼦中有很多符号都未定义,例如DXTRACE_ERR_MSGBOX,⽽我⼜懒得修正这个错误,于是决定先注释掉它,反正我只想看看运⾏到创建录⾳缓存的那部分代码是如何运⾏的。结果⼀编译,发现这样的地⽅有好⼏⼗处,我想⼀个个去注释太⿇烦了,就决定⽤正则表达式搜索替换。由于之前没怎么接触这个,最后捣⿎了好久终于弄清楚了,记下来以备后查。先引⽤⼀个关于VS正则表达式的博客⽂章(博主zelin):当然,英⽂好的直接看MSDN即可,完全没有基础的,可以先看看这些资料了解⼀下。我的任务是将所有return DXTRACE_XXX( TEXT("XXX"), hr );的代码注释掉,替换为// return DXTRACE_XXX( TEXT("XXX"), hr );return hr;⼤家可以看到,我要替换的字符串还是有格式的,以 “return DXTRAE” 开头,以 “;” (分号)结尾,中间的字符串是变化的,也就是这是⼀个有着固定头尾的字符串,我先把正则表达式写出来,然后分析。查找内容:{(return DXTRACE)(.)*(;)}替换为:1nreturn hr;先说查找内容,其中,⽤到了 ⼩括号() ,⼤括号{} ,点号.,星号*⼩括号,⽤于将表达式分块,例⼦中,我分了3块:1,return DXTRACE2,.3,;其中第⼀块和第三块,即待搜索的字符串中固定的部分,⽽第⼆块是点,按MSDN⽂档说明,这个点匹配除分⾏符(line break)外的任意字符,点后⾯的符号星号(*),则匹配前⼀个表达式块零次或多次,也就是匹配前⾯的第2块表达式零次或多次,所以说,我需要分块,如果不分的话,就会匹配星号前⾯所有的字符串。最后⼀个表达式块,由于不在星号匹配范围内,⽽且⼜是最后⼀个块,那么⼩括号可以省略。⼤括号的⽤处是标记符,主要⽤于在替换时使⽤,按照我写的例⼦,我将匹配出来的字符串做个标记,然后在替换时以 1 的⽅式引⽤。不清楚的话我再举个例⼦:{a}{b}{c}这个例⼦,将匹配例如 abcxyz 的字符串,那么我在替换时,可以⽤ 1 引⽤ a,2 引⽤ b,3 引⽤ c ,依此类推。这有什么⽤呢?假设你想替换的字符串中,有需要保留的部分,那么这个就很有⽤了。最后,替换部分的例⼦,想必⼤家⾃⼰应该可以看明⽩了,唯⼀要提的就是,⼀些特殊符号需要⽤到转义符: 好了,关于VS的正则表达式还有很多语法没有提到,不过我想⼤家应该可以⾃⼰慢慢摸索了,这个⽤好了,那么再在VS中查找替换,就⽅便多了。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690641070a383717.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信