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 ...
随机推荐
- javascript之自定义数组工具对象
<pre name="code" class="html">/* 需求:编写一个js文件,在js文件中自定义一个数组工具对象, 该工具对象要有一个找 ...
- C语言之free函数及野指针
[FROM MSDN && 百科] 原型: void free(void *ptr); #include<stdlib.h>或#include <malloc.h& ...
- android官方技术文档翻译——aar 格式
本文译自androd官方技术文档<AAR Format>,原文地址:http://tools.android.com/tech-docs/new-build-system/aar-form ...
- (四十七)Quartz2D引擎初步
Quartz2D是跨平台的,同时支持iOS与Mac. 支持圆型裁剪,可以实现圆形头像等功能,也支持手势解锁.折线图等的制作. 对于复杂的UI界面,还可以通过Quartz2D将控件内部的结构画出来,可用 ...
- Opencv学习笔记------Harris角点检测
image算法测试iteratoralgorithmfeatures 原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/73 ...
- JavaScript进阶(五)js中取小数整数部分函数
js中取小数整数部分函数 丢弃小数部分,保留整数部分 js:parseInt(7/2) 向上取整,有小数就整数部分加1 js: Math.ceil(7/2) 四舍五入 js: Math.round(7 ...
- Java集合之Set
Set也是继承自Collection,Set也是集合的一种,同时Set不允许重复的元素存在.Set的实现类都是基于Map来实现的,其中HashSet是通过HashMap来实现的,TreeSet是通过T ...
- Spring AOP (二)
下面介绍@AspectJ语法基础 一.切点表达式函数 AspectJ的切点表达式由关键字和操作参数组成,如execution(* greetTo(..)) 的切点表达式,execution为关键字,而 ...
- 【一天一道LeetCode】#13. Roman to Integer
一天一道LeetCode系列 (一)题目 Given a roman numeral, convert it to an integer. Input is guaranteed to be with ...
- linux上 java 使用 javasqlite
linux上 java 使用 javasqlite http://www.ch-werner.de/javasqlite/ 1) 下载: http://www.ch-werner.de/javasql ...