绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
3月242016

au3 正则参考 -01-工作方式

作者:绿色风   发布:2016-3-24 12:48 Thursday   分类:   阅读:3941次   评论:0条  

<!DOCTYPE html>

RegExp

正则表达式的工作方式

正则表达式提供了功能强大, 灵活而又高效的方法来处理文本. 正则表达式的全面模式匹配表示法使你可以快速分析大量文本以找到特定的字符模式:
     验证文本以确保它匹配预定义的模式(如电子邮件地址);
     提取, 编辑, 替换或删除文本子字符串;
     将提取的字符串添加到集合以生成报告.

对于处理字符串或分析大文本块的许多应用程序而言, 正则表达式是不可缺少的工具.

使用正则表达式处理文本的中心构件是正则表达式引擎, 处理文本至少要求向该正则表达式引擎提供以下两方面的信息:
     1. 提供正则表达式识别文本的模式. 正则表达式模式用特殊的语法或语言定义, 该语法或语言与 Perl 5 正则表达式兼容.
     2. 提供正则表达式分析文本的模式.

正则表达式可以执行以下操作:
    确定输入文本中是否具有匹配正则表达式模式的字符串
    匹配正则表达式模式的一个或所有文本匹配项. 返回提供有关匹配文本的信息. 收集匹配对象.
    通过调用 StringRegExpReplace() 替换匹配正则表达式模式的文本.

正则表达式示例

示例 1: 替换子字符串

假设一个邮件列表包含一些姓名, 这些姓名有时包括称谓(Mr., Mrs., Miss 或 Ms.) 以及姓氏和名字. 如果你从列表中生成信封标签时不希望包括称谓, 则可以使用正则表达式移除称谓, 如以下示例所示.

字符串: Mr. Henry Hunt, Ms. Sara Samuels, Abraham Adams, Ms. Nicole Norris

表达式: Mr\.? |Mrs\.? |Miss |Ms\.?

表达式模式可匹配任何 “Mr”, “Mr.”, “Mrs”, “Mrs.”, “Miss”, “Ms” 或 “Ms.”

从原始字符串中移除匹配项:

StringRegExpReplace("Mr. Henry Hunt, Ms. Sara Samuels, Abraham Adams, Ms. Nicole Norris", "Mr\.? |Mrs\.? |Miss |Ms\.?", "")

替换结果: Henry Hunt, Sara Samuels, Abraham Adams, Nicole Norris

 

示例 2: 标识重复的单词

意外地重复单词是编写器常犯的错误. 可以使用正则表达式标识重复的单词, 如以下示例所示.

字符串: This this is a nice day. What about this? This tastes good. I saw a a dog.

表达式: (?i)\b(\w+?)\s\1\b

匹配结果(标志 4):
[0]=> [0]This this
[0]=> [1]This ; 匹配开始位置 0
[1]=> [0]a a ; 匹配开始位置 66
[1]=> [1]a

表达式分析:

模式 说明
(?i) 启动不区分大小写的匹配
\b 在单词边界处开始
(\w+?) 匹配一个或多个单词字符, 但字符要尽可能的少. 它们一起构成称为 \1 的捕获组
\s 与空白字符匹配
\1 与等于名为 \1 捕获组的子字符串匹配
\b 在单词边界处结束

此示例将子字符串“This this” , "a a" 标识为重复, 但如果子字符串 “this?This” 由于插入标点符号, 该子字符串不被标识为重复.

 

示例 3: 匹配货币符号

字符串:
Office expenses on 2/13/2008:
Paper (500 sheets) $3.95
Pencils (box of 10) $1.00
Pens (box of 10) $4.49
Erasers $2.19
Ink jet printer $69.95
Total Expenses $ 81.58

表达式: \$\s*[-+]?([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)

匹配结果(标志 4):
[0]=> [0]$3.95
[1]=> [0]$1.00
[2]=> [0]$4.49
[3]=> [0]$2.19
[4]=> [0]$69.95
[5]=> [0]$ 81.58

此正则表达式模式可以按以下方式解释:

模式 子模式1 子模式2  
\$     查找美元符号 $ . $ 前面包含一个反斜杠指示按字面解释美元符号, 而非将其作为正则表达式定位点.
(单独的 $ 符号将指示正则表达式引擎应尝试在字符串的末尾开始匹配.)
\s*     查找空白字符的 0 个或多个匹配项.
[-+]?     查找正号或负号的 0 个或一个匹配项.
([0-9]{0,3}(,[0-9]{3})*(\.[0-9]+)?)     圆括号将表达式定义为捕获组. 如果找到匹配项, 则有关匹配字符串的此部分信息可以从第二个捕获组对象中检索
(集合中的第一个元素表示整个匹配.). 查找对象分述如下:
  ([0-9]{0,3}(,[0-9]{3})*   查找对象分述如下:
    [0-9]{0,3} 查找十进制数字 0 到 9 的零到三个匹配项
    (,[0-9]{3}* 查找后跟三个十进制数字的组分隔符的零个或多个匹配项
  (\.[0-9]+)?   查找对象分述如下:
    \. 转义句点字符为原意文本字符. 匹配小数分隔符(小数点)
    [0-9]+)? 查找上项匹配值(小数点)后跟 1 或 多个十进制数字的 0 个或 1 个匹配项





本文固定链接: http://www.jianyiit.com/post-168.html

blogger
该日志由 绿色风 于2016-3-24 12:48 Thursday发表在 分类下。
版权所有:《绿色风's Blog》 → 《au3 正则参考 -01-工作方式》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -02-转义字符
下一篇:AutoIt 正则表达式参考与学习[序]

热门文章

相关文章

  • AutoIt-API-WS-一个轻量的HTTP服务器,可以用来构建自己的WEB-API
  • au3 正则参考 -57-反向引用
  • au3 正则参考 -64-负预测先行断言
  • au3 正则参考 -55-普通组与命名组混合编号规则
  • au3 正则参考 -44-忽略空白
取消回复

发表评论

亲,头像对么?

94 + 80 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7252 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap