在VisualStudio 编辑器文本替换中使用正则表达式

替换时使用正则表达式,其优点在于可以通过正则分组捕获,并在替换字符串中使用。

在VS2012之前的版本中,捕获内容用{}包含,引用时,使用 \1 形式;

在VS2012及以后版本中,捕获内容符合正则表达式,用()包含,引用时使用 $1 形式。

下面以新版本格式举例说明:

假设代码中包含多个自动属性,如

1 public bool IsChecked { get; set; }
2 public double Width { get; private set; }
3 private int Count { get; set; }

假设所在类型实现INotifyPropertyChanged接口,且有方法

1 void RaisePropertyChangedEvent(string PropertyName){
2     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
3 }

现在要为所有公共属性添加相应的私有字段,使其能在赋值变更时调用函数触发属性通知事件,则可在Ctrl + h唤出替换窗口,并启用正则表达式。

在源文本框中输入:

  public (\S*) (\S*) { get; (\S*\s?)set; }

在替换目标文本框中输入:

  public $1 $2 { get { return _$2; } $3set { _$2 = value; RaisePropertyChangedEvent("$2"); } } $1 _$2;

在匹配文本中,每个分组用小括号()包含,并从1开始捕获。标记为红色的为属性类型,标记为绿色的为属性名,标记为紫色的为set访问器修饰符。

在目标文本中,被捕获的文本用美元符号$和1基索引值代表,替换后的代码为每个公共属性增加了一个私有字段,该字段名为在属性名前加上一个下划线_。

1 public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; RaisePropertyChangedEvent("IsChecked"); } } bool _IsChecked;
2 public double Width { get { return _Width; } private set { _Width = value; RaisePropertyChangedEvent("Width"); } } double _Width;
3 private int Count { get; set; }
时间: 2024-11-09 14:15:06

在VisualStudio 编辑器文本替换中使用正则表达式的相关文章

C++、Java、JavaScript中的正则表达式

编程思想之正则表达式 什么是正则表达式? 正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的公式.如你要在一篇文章中查找第一个字是"罗"最后一个字是"浩"的三个字的姓名,即"罗*浩":那么"罗*浩"就是公式,也称作模式(Pattern),这篇文章就是要匹配的串(或叫文本text).再如,你要检查输入的一个字符串是否是126邮箱的格式,你得制定一个规则去查检,这种规则就是正则表达式. 从入门开始

UltraEdit中使用正则表达式

正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串一定在行尾 ? 匹配除换行符外的任一单个字符. * 匹配任意个数的字符出现任意次数(不包括换行符) + 匹配前导字符或者表达式出现一次或者更多次(不包括换行符) ++ 匹配前导字符或者表达式不出现或者出现一次以上(不包括换行符) ^b 匹配页中断符 ^p 匹配DOS文件的换行符 ^r 匹配MAC文件的换行符(CR Only) ^n 匹配UNIX文件的换行符 (

JavaScript中的正则表达式(终结篇)

JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScript中的使用: JavaScript对正则表达式的支持程度 支持正则表达式的RegExp类型 RegExp的实例属性 RegExp的实例方法 RegExp的构造函数属性 简单的应用 第一部分:JavaScript对正则表达式的支持程度 之前我介绍了正则表达式的基本语法,如果大家不是很了解可以先看下面

Python中re(正则表达式)模块函数学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. 方法/属性 作用 match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回 match() 函数只检查 RE 是否在字符串开始处匹配

Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

Coursera-Getting and Cleaning Data-Week4 Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周课程主要针对text进行处理.里面包括 1.变量名的处理 2.正则表达式 3.日期处理(参见swirl lubridate包练习) 首先,变量名的处理,奉行两个原则,1)统一大小写tolower/toupper:2)去掉在导入数据时,因为特殊字符导致的合并变量 3)不要重复:4)少用代码缩写 使用的函数包括 替换查找:

SQL Server中使用正则表达式

SQL Server 2005及以上版本支持用CLR语言(C# .NET.VB.NET)编写过程.触发器和函数,因此使得正则匹配,数据提取能够在SQL中灵活运用,大大提高了SQL处理字符串,文本等内容的灵活性及高效性. 操作步骤: 1.新建一个SQL Server项目(输入用户名,密码,选择DB),新建好后,可以在属性中更改的 2.新建一个类“RegexMatch.cs”,选择用户定义的函数 可以看到,该类为一个部分类:public partial class UserDefinedFuncti

String的replaceAll方法中的正则表达式用法

项目里面 需要对已手机号码进行 如下的显示 比如15088688388 要显示为150****8388的效果 实现这个简单的效果 方法有很多 我想试试用正则表达式去实现 查了点资料最终试出来以下方法可行 System.out.println("15088688388".replaceAll("(\\d{3})(\\d{4})","$1****")); 输出结果:150****8388 首先对replaceAll方法的第一个参数进行解释 第一个参数

MySQL中的正则表达式

正则表达式是用正则表达式语言来建立 基本字符的匹配 .是正则表达式语言中的一个特殊的字符,它表示匹配任意一个字符 在LIKE和REGEXP之间有一个重要的差别,LIKE匹配整个列,如果被匹配的文本仅在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符) 而REGEXP在列值内匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行也会被返回. MySQL中的正则表达式匹配默认不区分大小写,为区分大小写,可使用BINARY关键字,在REGEXP后面加上BINARY即

java 中的正则表达式

一. 什么是正则表达式? 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”).模式描述在搜索文本时要匹配的一个或多个字符串. 二.正则表达式语法参考: https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx.    三.  正则表达式规则的例子: /^(/d{3}-|/d{4}-)?(/d{8}|/d{7})?$/    //国内电话 /^[1-9]*[1-9][0-9]*$/