`

框架 Regex 类

 
阅读更多

框架 Regex 类

NET 框架用 Regex 类实现正则表达式,并有三个支持类:Match、Group 和 Capture (参见 Figure A)。典型情况下,你创建 Regex 并用输入串调用 Regex::Match 来获得第一个 Match,或用 Regex::Matches 来获取所有匹配:Regex *r = new Regex("\b\w+\b"); MatchCollection* mc = r->Matches("abc ,_foo ,<& mumble7"); for (int i=0; i<mc->Count; i++) { Match *m = mc->Index(i); Console.WriteLine(m->Value); }   这将显示“abc”,“foo”和“mumble7”,每个匹配在一行。这个例子引入了一个专门的字符 \b,所谓锚或原子零宽度断言,就像 ^(开始)和$(结尾)。\b 指定某个单词的边界,所以“\b\w+\b”意思是用单词分隔的一个或多个单词字符。
 

 


Figure A Regex 类

  正则表达式中的每个括弧表达式都构成一个 Group。Regex::Groups 返回作为集合的 Groups,它决不会是空,因为整个正则表达式本身即是一组。Groups 很重要,因为它们使你进行逻辑 OR 匹配,如“(ying|yong)”,它们使你将限定符应用到子表达式,并让你吸取匹配的单独部分。正文的 Figure 1 中我的 RegexTest 程序运行后用邮编为例显示分组。
  在所有函数中最强大的函数要数 Regex::Replace,它使得正则表达式的威力惊人地强大。和许多开发人员一样,过去在多次传递字符串到多行编辑控件之前,我常常不得不手工将 “\n” 转换为“\r\n”,但使用 Regex::Replace,这个操作简直易如反掌。

s = Regex::Replace(s,"\n","\r\n");

 

  Regex::Match 和 Replace 具备静态重载,所以你可以不用创建对象,以快速使用正则表达式。我最喜欢的 Regex::Replace 重载之一是带有一个委托参数,使你能用过程代码动态计算替换文本——参见正文中那个有趣的例子。
  一些警告:每一种正则表达式的实现是有不太一样的。例如,在 Perl 中,{,1}是{0,1}的速记版,而微软的老大们不是那样做的。要当心一些微小的差别。权威的 .NET Regex 资料请参考 MSDN 库中的 “asp">Regular Expressions as a Language”。

Regex.Match 方法
   在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回。
   重载列表
   (1) 在指定的输入字符串中搜索 Regex 构造函数中指定的正则表达式匹配项。
   [C#] public Match Match(string);
   (2) 从指定的输入字符串起始位置开始在输入字符串中搜索正则表达式匹配项。
   [C#] public Match Match(string, int);
   (3) 在指定的输入字符串中搜索 pattern 参数中提供的正则表达式的匹配项。
   [C#] public static Match Match(string, string);
   (4) 从指定的输入字符串起始位置开始在输入字符串中搜索具有指定输入字符串长度的正则表达式匹配项。
   [C#] public Match Match(string, int, int);
   (5) 在输入字符串中搜索 pattern 参数中提供的正则表达式的匹配项(匹配选项在 options 参数中提供)。
   [C#] public static Match Match(string, string, RegexOptions);
  二、应用举例
   1.下面的代码是为了取出网页中的Title属性
   Match TitleMatch = Regex.Match(fileContents, "<title>([^<]*)</title>", RegexOptions.IgnoreCase | RegexOptions.Multiline );
   filetitle = TitleMatch.Groups[1].Value;
   注意红色的1, Regex.Match方法得到的Groups的索引是从1开始的,而不是从0开始的
  
  2. 下面的代码是为了取出网页头部的"Content"属性
   Match DescriptionMatch = Regex.Match( fileContents, "<META NAME=\"DESCRIPTION\" CONTENT=\"([^<]*)\">", RegexOptions.IgnoreCase | RegexOptions.Multiline );
   filedesc = DescriptionMatch.Groups[1].Value;

分享到:
评论

相关推荐

    awesome-regex:精选的正则表达式库,工具,框架和软件的精选集合

    awesome-regex:精选的正则表达式库,工具,框架和软件的精选集合

    MFC应用程序在.NET框架下的扩展(2-1)

    32 2.1 引言 32 2.2 使用Regex类来分解字符串 32 2.3 用Match和MatchCollection类来搜索字符串 39 2.4 处理捕获组和捕获 45 2.5 解析和置换字符串 53 2.6 使用捕获组和替换模式置换匹配 56 2.7...

    regexr:这是CRAN R软件包系统信息库的只读镜像。 regexr —可读的正则表达式。 主页

    正则表达式 编写可维护代码的最强大工具之一就是将大型方法分解为名称明确的较小方法-肯特·贝克(Kent Beck)称之...安装要下载regexr的开发版本: 下载或,解压缩并运行R CMD INSTALL ,或使用pacman软件包安装开发版

    LinqToRegex:LINQ to Regex 库提供了对 .NET 正则表达式的语言集成访问

    LINQ to Regex 库提供对 .NET 正则表达式的语言集成访问。 它允许您直接在代码中创建和使用正则表达式,并开发复杂的表达式,同时保持其可读性和可维护性。 不需要了解正则表达式语法(但您应该熟悉基础知识)。 ...

    Python零基础速成班-第13讲-Python正则表达式Regex.ipynb

    整个教程大概有80个学时,同时也引入图像识别基础、算法基础、小游戏、爬虫、API设计基础、Excel文档操作、Numpy、Pandas、Matplotlib画图、数据库基础、网页WEB编程和Flask框架基础等,完成后将达到初级Python...

    JAVA_API1.6文档(中文)

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

    用Swift编写Linux兼容正则表达式框架-Swift开发

    SwiftyRegex SwiftyRegex是用纯Swift编写的正则表达式微框架。 目的是使其与Linux和其他POSIX兼容系统兼容。 当然,不要在有权访问NSReg的应用程序中使用它。SwiftyRegex SwiftyRegex是用纯Swift编写的正则表达式微...

    truemail::rocket:可配置的框架不可知的普通Ruby:incoming_envelope:电子邮件验证程序验证程序。 通过Regex,DNS和SMTP验证电子邮件。 确保电子邮件地址有效且存在

    可配置的框架不可知的普通Ruby电子邮件验证程序。 通过Regex,DNS和SMTP验证电子邮件。 确保电子邮件地址有效并且存在。 实际和可维护的文档 :books: 因为开发商住。 目录 概要 电子邮件验证是一件棘手的事情。 ...

    Regex Search-crx插件

    :balloon:按帧的源代码签出框架并在此贡献: •https://github.com/victor-savinov/regex-search. 权限解释: :star:“阅读并更改您访问的网站上的所有数据”:能够在任何网站上连接和搜索查询。

    regexr:可读的正则表达式

    正则表达式 编写可维护代码的最强大工具之一就是将大型方法分解为名称明确的较小方法-肯特·贝克(Kent Beck)称之为...要下载regexr的开发版本: 下载或,解压缩并运行R CMD INSTALL ,或使用pacman软件包安装开发版

    Jquery验证框架【可以通过正则表达式验证】

    regex: /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ } 在 messages中 web_email: { required: "请填写您的电子邮件地址", email: jQuery.format("请正确填写电子邮件"), regex: jQuery.format("请正确填写...

    validity.js:JavaScript 模型的验证框架

    JavaScript 模型的验证框架。 特征 各种各样的内置验证器。 与服务器端验证(即 rails、node)轻松集成 支持特定于类的验证。 通过Validity.RULES字典轻松添加新的站点范围的验证器。 适用于 jQuery 和 Angular....

    PySwiftyRegex:以Python方式轻松处理Swift中的Regex

    PySwiftyRegex 在Swift中以Pythonic方式轻松处理Regex。这很容易import PySwiftyRegexif let m = re. search ( " [Tt]his is (.*?)easy " , " I think this is really easy!!! " ) {m. group () // "this is really ...

    java api最新7.0

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    ReTest.jl:Julia的测试框架

    ReTest是Julia的测试框架,允许: 在源文件中定义测试,延迟执行并按需触发。 当人们喜欢对方法的定义和相应的测试彼此靠近时,这很有用。 这对于尚未(尚未)打包的代码以及不想维护单独的文件集进行测试的代码...

    分布式爬虫框架Cola.zip

    Cola是一个分布式的爬虫框架,用户只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。pip install pyyaml安装下载或者用git clone源码,假设在目录/to/...

    Java 1.6 API 中文 New

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    [Java参考文档].JDK_API 1.6

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户界面...

    java jdk-api-1.6 中文 chmd

    java.util.regex 用于匹配字符序列与正则表达式指定模式的类。 java.util.spi java.util 包中类的服务提供者类。 java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类。 javax.accessibility 定义了用户...

Global site tag (gtag.js) - Google Analytics