visual Studio 中使用正则表达式来进行查找替换

摘要:
$2按钮:$4$5。

1.打开visual Studio

2. 通过菜单Edit -->Find and Replace -->Replace In File ,或者使用 ctrl + Shift + H 打开在文件中查找对话框,如下:

visual Studio 中使用正则表达式来进行查找替换第1张

Find What: 填写查找语句的地方,可以是入任何查找关键字,也可以是正则表达式。

Replace With: 填写替换语句的地方。

Look in:查找位置,可以是当前文档,打开文档,当前工程,全部工程,指定目录等等。

3. 假定我们在一个目录下的多个文件中存在下面模式的内容

 <Item Description=" Today"Name="Click">
        <Item Description=""Name="">开始</Item>
</Item>

我们需要将上面的代码替换为下面的结果,就是在开始前面追加 Button:

   <Item Description=" Today"Name="Click">
        <Item Description=""Name="">Button:开始</Item>
    </Item>

上面代码的特征是Item 节点的Name="Click" ,Item 节点有一个子节点,针对上面的模式我们开始写查找正则表达式。

查找正则:

<Item( [^>]* )Name="Click">([s
]+)<Item( [^>]*)>([^<]*)</Item>([s
]+)</Item>
捕获组含义
( [^>]* )
这是第一个捕获组,目的是捕获 Item之后 ,Name 之前的内容,因为这段内容是变化的,在不同的地方会不一样
([s
]+)
这个第二个捕获组,是为了匹配换行,新行前有不可见字符。
( [^>]*)
这是第三个捕获组,为了捕获子节点中的变化字符。
 ([^<]*)
这是第四个不过组,为了捕获子节点的内容
([s
]+)
这是第五个捕获组,是为了匹配换行,新行前有不可见字符。

通过上面的查找正则表达式,我们就可以找到指定范围内符合上面模式的字符串。下面我们看一下替换正则表达式。

<Item$1Name="Click">$2<Item$3>Button:$4</Item>$5</Item>

在替换正则表达式中,我们将查找正则表达式中捕获组对应的位置使用 $1,$2,.... 来替换,这样就保证了查找字符串中对应内容的不变。

而对应我们要修改的第四个捕获组,我们使用Button:$4 来替换,达到我们修改的目的。

例2:将项目中的一部分内容去除掉

替换前内容:

<Item Description=""Name="SmiplePreviewFun">
        <Item Description=""Name="">ページ設定</Item>
        <Item Description=""Name="">印刷プレビュー</Item>
        <Item Description=""Name="">2000</Item>
</Item>

替换后内容:

<Item Description=""Name="SmiplePreviewFun">
       <Item Description=""Name="">2000</Item>
</Item>

我们希望将中间两个节点去掉:

查找的正则表达式

<Item ([^>]*) Name="SmiplePreviewFun"([^>]*)>([s
]+<Item [^<]*</Item>[s
]+<Item [^<]*</Item>)([s
]+<Item [^<]*</Item>[s
]+)</Item>

设置4个捕获组,前两个捕获组是为了应对可能的变换,第三个捕获组是我们要移除的内容,第四个捕获组是要保留的内容

替换的正则如下:

<Item $1 Name="SmiplePreviewFun"$2>$4</Item>

对于包含四个节点的查找正则

节点格式

<Item Description="设置值"Name="SetItemValue">
        <Item Description=""Name="">MotoFilter</Item>
        <Item Description=""Name="">btnKanjoPattern</Item>
        <Item Description=""Name="">args:39</Item>
        <Item Description=""Name="">1</Item>
      </Item>

正则格式

<Item ([^>]*) Name="SetItemValue"([^>]*)>([s
]+<Item [^<]*</Item>[s
]+<Item [^<]*</Item>[s
]+<Item [^<]*</Item>)([s
]+<Item [^>]*>1</Item>[s
]+)</Item>

掌握 在Visual Studio 查找替换时使用正则表达式的技能,如果日常工作中碰到在大量文件中替换固定模式的字符串,就会得心应手了。

免责声明:文章转载自《visual Studio 中使用正则表达式来进行查找替换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos7下单用户模式,救援模式的应用以及虚拟机下的克隆Android 常用依赖手记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx配置使用

nginx 安装(阿里云服务器)   1,nginx 安装 yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++ yum install -y lrzsz cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/sof...

Python正则表达

```# -*- coding:utf-8 -*-import re re - Support for regular expressions (RE).正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正...

C#正则表达式引发的CPU跑高问题以及解决方法团队

3月23日(周日)下午16:30左右,博客园主站负载均衡中的2台Web服务器CPU玩起了爬楼梯的游戏(见上图),一直爬到了接近100%。发现这个状况后,我们立即将这2台阿里云临时磁盘云服务器从负载均衡中摘下来,挂上1台云盘云服务器,恢复了正常。 由于曾经多次遇到过阿里云云服务器CPU问题,现在对阿里云云服务器产生了一种偏见,只要出现CPU问题,就会首先怀...

MySQL中REGEXP正则表达式使用大全

REGEXP在mysql是用来执行正则表达式的一个函数 像php中的preg之类的函数了,regexp正则函数如果只是简单的查询使用like即可,但复杂的还是需要使用regexp了,下面我们来看看。 MySql用户手册建议,在构造简单查询时,仍使用通配符。 如:Select [*|fieldname list] From [tablename] whe...

批量去除Teleport Pro整站下载文件冗余代码

teleport pro tppabs标签批量删除 teleport pro tppabs标签批量删除 使 用Teleport Pro下载的网页代码中包含了很多垃圾代码,比如下载的html网页代码中会出现tppabs标签,而且还会将所有的href标签中加入了很多垃圾代码, 在css会加入了tpa标签,这些都是冗余代码,可以将其全部删除,但是由于代码太多,...

11正则表达式RE

正则表达式RE 正则表达式概览 正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。 在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将配被查找的行中任何位置出现的相同模式。在正则表达式中, 元字符是最重要的概念。 匹配数字: [1]+$ ---&...