今天集中说说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# 正则表达式的更多相关文章

  1. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

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

    1.打开visual Studio 2. 通过菜单Edit -->Find and Replace -->Replace In File  ,或者使用  ctrl + Shift + H  ...

  3. 在 Visual Studio 中使用正则表达式

    Visual Studio 使用 .NET framework 正则表达式查找和替换文本. 在 Visual Studio 2010 和早期版本中,Visual Studio 在“查找和替换”窗口中使 ...

  4. 统计Visual Studio项目的代码行数

    原文转自 https://blog.csdn.net/tyc129/article/details/74279806 使用Visual Studio 自带的在文件中查找功能中的正则表达式实现代码统计功 ...

  5. Visual Studio使用正则表达式快速统计总共代码行数

    原文:Visual Studio使用正则表达式快速统计总共代码行数 按CTRL+SHIFT+F,勾上支持正则表达式,然后输入搜索内容: <span style="font-family ...

  6. Visual Studio 中使用的正则表达式 说明

    Visual Studio 中使用的正则表达式 说明 2013-10-11 21:10:12|  分类: VB和VBA知识|举报|字号 订阅       参考:详解Visual Studio正则替换大 ...

  7. Visual Studio查找中文的正则表达式

    原文: Visual Studio查找中文的正则表达式 经常有这样的需求:项目代码中有一些输出信息是中文写的,不过现在要做国际化,代码""中写的中文都要改成英文.这样就需要将代码中 ...

  8. 更有效率的使用Visual Studio(二)

    没想到上一篇文章有这么多人喜欢,多谢大家支持.继续- 很多比较通用的快捷键的默认设置其实是有一些缩写在里面的,这个估计也是MS帮助我们记忆.比如说注释代码的快捷键是Ctrl + E + C,我们如果知 ...

  9. Visual Studio高级调试技巧

    1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...

随机推荐

  1. Socket编程实践(11) --epoll原理与封装

    常用模型的特点 Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 se ...

  2. Linux信号实践(4) --可靠信号

    Sigaction #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct si ...

  3. 用Fiddler在Android上抓包(Http+https)

    Fiddler是一个HTTP协议调试代理工具,在开发网络应用的时候经常会用到,其最基本的作用是能抓HTTP的数据包,当然它还有更高级的用法,如添加断点.修改请求与相应的数据等等... 抓HTTP包 安 ...

  4. MySQL数据库写入图片并读取图片显示到JLabel上的详解

    相较于Oracle,MySQL作为一个轻量级的开源的数据库,可谓是大大简化了我们的操作.这次我就来写一个关于数据库存入图片,获取图片的例子吧,也为了今后的复习使用.(我们一般采取存入路径的方式,而不是 ...

  5. Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml

    为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据.这个文档所描述的多点触控协议可以让内核驱动程序向用户层上报任意多指的数据信息. 使用说明 单点触摸信息是以ABS承载 ...

  6. jenkin插件整理

    分类 plugin名称 wiki地址 源码地址 plugin作用范围 备注 Build Reports构建报告(此类插件用来分析构建结果,比果代码检查,测试CASE分析,并将这些结果以报表,趋势图等形 ...

  7. log4j.xml示例

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SY ...

  8. (六十三)自定义TabBar和TabBarButtonItem

    自定义TabBar 先自定义一个UITabBarController,为了方便跳转与设定属性,借助系统的TabBarController的功能,但是要移除内部的控件然后自己添加一个View和多个按钮. ...

  9. 生产者消费者的java实现

    先看最简单的,也就是缓冲区的容量为1 缓冲区容量为1 import java.util.List; public class ProducerAndConsumer2 { static class A ...

  10. Struts源码之ValueStack

    /** * ValueStack allows multiple beans to be pushed in and dynamic EL expressions to be evaluated ag ...