Visual Studio 和 c# 正则表达式
今天集中说说VS生产环境下的正则。
Visual Sturdio 2012以上版本查找替换
对于VS的正则,准确说,是VS2012之后的IDE下VS的正则。
VS的查找和替换功能支持基础的正则表达式,主要说一下替换。
在查找框中用(.*)来标识字符,在替换框里用$1,$2来识别。
C# 正则表达式
然后说下C#的正则
c#的正则使用起来很方便,正则类为Regex,其构造参数有两个,第一个是我们的pattern,第二个是正则的选项(默认为None),具体内容如下,我比较懒,就直接把官方注释贴过来了:
[Flags]
public enum RegexOptions
{
//
// 摘要:
// 指定不设置选项。
None = 0,
//
// 摘要:
// 指定不区分大小写的匹配。
IgnoreCase = 1,
//
// 摘要:
// 多行模式。更改 ^ 和 $ 的含义,使它们分别在任意一行的行首和行尾匹配,而不仅仅在整个字符串的开头和结尾匹配。
Multiline = 2,
//
// 摘要:
// 指定有效的捕获仅为形式为 (?<name>...) 的显式命名或编号的组。这使未命名的圆括号可以充当非捕获组,并且不会使表达式的语法 (?:...) 显得笨拙。
ExplicitCapture = 4,
//
// 摘要:
// 指定将正则表达式编译为程序集。这会产生更快的执行速度,但会增加启动时间。在调用 System.Text.RegularExpressions.Regex.CompileToAssembly(System.Text.RegularExpressions.RegexCompilationInfo[],System.Reflection.AssemblyName)
// 方法时,不应将此值分配给 System.Text.RegularExpressions.RegexCompilationInfo.Options 属性。
Compiled = 8,
//
// 摘要:
// 指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。
Singleline = 16,
//
// 摘要:
// 消除模式中的非转义空白并启用由 # 标记的注释。但是,System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace
// 值不会影响或消除字符类中的空白。
IgnorePatternWhitespace = 32,
//
// 摘要:
// 指定搜索从右向左而不是从左向右进行。
RightToLeft = 64,
//
// 摘要:
// 为表达式启用符合 ECMAScript 的行为。该值只能与 System.Text.RegularExpressions.RegexOptions.IgnoreCase、System.Text.RegularExpressions.RegexOptions.Multiline
// 和 System.Text.RegularExpressions.RegexOptions.Compiled 值一起使用。该值与其他任何值一起使用均将导致异常。
ECMAScript = 256,
//
// 摘要:
// 指定忽略语言中的区域性差异。有关更多信息,请参见 Performing Culture-Insensitive Operations in the RegularExpressions
// Namespace。
CultureInvariant = 512
}
得益于C#可以用@开头的字符串(无转译字符串),写起正则时没有Java那么蛋疼,其他如IsMatch()方法,Match()方法和Java十分类似。
此外,C#匹配中,可以通过(?<groupName>.*)的形式获取该部分匹配到的值,其中.*也可以是其他任何正则匹配字符。
这里简单给个例子。
声明:
//对信息进行检测的正则表达式
public static Regex sendRegex;
public static Regex receiveRegex;
public static Regex errorRegex;
初始化:
sendRegex = new Regex(@">>\d+>(?<number>\d+#)");
receiveRegex = new Regex(@"(?<number>\d+#)");
errorRegex = new Regex(@"(error|错误|失败)");
使用:
if (sendRegex.IsMatch(message))
{
Messenger.Default.Send(sendRegex.Match(message).Groups["number"].Value, "MessageSend");
}
else if (receiveRegex.IsMatch(message))
{
Messenger.Default.Send(receiveRegex.Match(message).Groups["number"].Value, "MessageReceived");
}
else if (errorRegex.IsMatch(message))
{
Messenger.Default.Send("failed", "MessageReceived");
}
Visual Studio 和 c# 正则表达式的更多相关文章
- 在Visual Studio中使用正则表达式匹配换行和批量替换
系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...
- visual Studio 中使用正则表达式来进行查找替换
1.打开visual Studio 2. 通过菜单Edit -->Find and Replace -->Replace In File ,或者使用 ctrl + Shift + H ...
- 在 Visual Studio 中使用正则表达式
Visual Studio 使用 .NET framework 正则表达式查找和替换文本. 在 Visual Studio 2010 和早期版本中,Visual Studio 在“查找和替换”窗口中使 ...
- 统计Visual Studio项目的代码行数
原文转自 https://blog.csdn.net/tyc129/article/details/74279806 使用Visual Studio 自带的在文件中查找功能中的正则表达式实现代码统计功 ...
- Visual Studio使用正则表达式快速统计总共代码行数
原文:Visual Studio使用正则表达式快速统计总共代码行数 按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: <span style="font-family ...
- Visual Studio 中使用的正则表达式 说明
Visual Studio 中使用的正则表达式 说明 2013-10-11 21:10:12| 分类: VB和VBA知识|举报|字号 订阅 参考:详解Visual Studio正则替换大 ...
- Visual Studio查找中文的正则表达式
原文: Visual Studio查找中文的正则表达式 经常有这样的需求:项目代码中有一些输出信息是中文写的,不过现在要做国际化,代码""中写的中文都要改成英文.这样就需要将代码中 ...
- 更有效率的使用Visual Studio(二)
没想到上一篇文章有这么多人喜欢,多谢大家支持.继续- 很多比较通用的快捷键的默认设置其实是有一些缩写在里面的,这个估计也是MS帮助我们记忆.比如说注释代码的快捷键是Ctrl + E + C,我们如果知 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
随机推荐
- C#与Oracle数据库
一.连接Oracle数据库 安装客户端: oracle数据库搭建在远程服务器上,本地只需要装个客户端,然后在安装目录下(D:\app\fangs\product\12.1.0\client_3\Net ...
- ACM竞赛:立方和问题
例如: 输入: n 代表多组数组 num1 , num 2 ep: 1 3 这时的算法结果应当为: 1 ^ 3 + 2 ^ 3 + 3 ^ 3 ep : 2 5 这时的算法结果应当为: ...
- AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构
requirejs + angular + angular-route 浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又 ...
- 【翻译】Ext JS最新技巧——2014-8-13
原文:Top Support Tips Greg Barry:新的框架. 新的文档类型(Doctype) 在Ext JS 5,只支持IE8+,因此不再古力用户使用严格的HTML文档类型.现在,推荐使用 ...
- WebService详解(二)
WsExplorer和Tcp/Ip Monitor工具本身就存在于eclipse和MyEclipse中 使用工具的原因: 1. 使用工具可以更好的了解WebService请求的过程 2. 使 ...
- Java-Enumeration总结
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹 Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTabl ...
- Git与远程reposiory的相关命令
问题1:Git如何同步远程repository的分支(branch) 某天,小C同学问我,为啥VV.git仓库里面本来已经删除了branchA这个分支,但是我的mirror中还是有这个分支呢? 分析: ...
- gtk+程序在关闭主窗口时的事件流
当鼠标单击gtk+窗口的关闭按钮时,程序首先接收到delete_event,当该事件处理函数返回TRUE表示事件已处理禁止进一步传播,从而取消关闭操作:当返回FALSE时,事件消息进一步向上传播,此时 ...
- shell脚本里面相互调用时路径不要用pwd获取
shellA调用shellB,如果shellB 里面需要使用路径作为变量,去寻找其它文件.那么要注意,不用pwd,其返回的是系统中用户当前所在位置的路径,也就是shellA的路径,这样就错了.应该用d ...
- HashMap是无序的
一. 说明 HashMap是基于哈希表Map的实现.设计初衷主要是为了解决键值(key-value)对应关联的,HashMap的优势是可以很快的根据键(key)找到该键对应的值(value),但是我们 ...