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

au3 正则参考 -90-正则表达式替换

作者:绿色风   发布:2016-3-29 13:38 Tuesday   分类:工具●教程   阅读:5096次   评论:0条  

<!DOCTYPE html> RegExp

正则表达式替换

AutoIt 的替换过程由函数 StringRegExpReplace() 完成, 函数除明确指定替换的文本字符串外, 还支持 \0 - \9 或 $0 - $9 格式使用正则表达式的捕获组内容进行替换.

替换元素和替换模式

替换是函数 StringRegExpReplace() 模式中唯一可识别的特殊构造. 与任何字符匹配的其他正则表达式语言元素(包括字符转义和句点 .)均不受支持. 同样, 替换语言元素只能在替换模式中识别, 并且在正则表达式模式中永远无效.

可以出现在 StringRegExpReplace() 函数 "替换" 参数的可识别字符是 \ 或 $ 字符, 尽管它在每个上下文中具有不同的含义. 在正则表达式模式中, $ 是与字符串的末尾匹配的定位点. 在替换模式中, $ 指示替换的开头.

对于类似于正则表达式中替换模式的功能, 使用反向引用. 有关反向引用的更多信息, 请参见反向引用构造.

使用组编号替换: $组编号 或 \组编号

$组编号 语言元素包括替换字符串中 组编号 捕获组所匹配的最后一个子字符串, 其中组编号是捕获组的索引. 例如, 替换模式 $1 指示匹配的子字符串将由捕获的第一个组替换.有关已编号的捕获组的详细信息, 请参阅正则表达式中的分组构造.

$ 后面的所有数字解释为属于组编号组. 如果这不是你想要的结果, 可改为命名组替换. 例如, 可以使用替换字符串 ${1}1 而不是 $11 来将替换字符串定义为带数字 1 的首个捕获组的值.有关详细信息, 请参阅使用命名组替换.

没有使用 (?<name>) 语法显式分配名称的捕获组从左到右进行编号(从 1 开始). 命名组也从左到右进行编号, 但以最后一个未命名组的索引大 1 的值开始. 例如, 在正则表达式 (\w)(?<digit>\d) 中, digit 命名组的索引为 2.

如果组编号不是正则表达式模式中定义的有效捕获组, $组编号将被解释为用于替换每个匹配项的文本字符序列.

 

下面的示例使用 $组编号 替换去除十进制值中的货币符号.它移除在货币值的开头或末尾找到的货币符号, 并识别两个最常见的小数点分隔符(“.”和“,”).

字符串: $16.32 12.19 £16.29 €18.29 €18,29

表达式: \p{Sc}(\s?\d+[.,]?\d)\p{Sc}

匹配结果(标志 3):
[0]16.32
[1] 12.19
[2]16.29
[3]18.29
[4]18,29

替换: StringRegExpReplace("$16.32 12.19 £16.29 €18.29 €18,29", '\p{Sc}(\s?\d+[.,]?\d)\p{Sc}', '$1')

替换结果(替换参数为 $1) : 16.32 12.19 16.29 18.29 18,29

表达式分析:

模式 子模式 说明
\p{Sc}   匹配 0 个或多个货币符号字符.
(\s?\d+[.,]?\d)   匹配内容分述如下. 这是第一个捕获组. 因为替换模式为 $1, 所以将整个匹配的子字符串替换为此捕获组.
  \s? 匹配零个或一个空白字符.
  d+ 匹配一个或多个十进制数字.
  [.,]? 匹配 0 个或一个句点或逗号.
  \d 匹配0 个或多个十进制数字.
\p{Sc}   匹配 0 个或多个货币符号字符.

使用 \组编号 替换

下面的示例标识字符串中的重复单词. (?i) 选项用于确保大小写不同但其他内容都相同的单词被认为是重复的.

字符串: The the dog jumped over the fence fence

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

匹配结果(标志 4):
[0]=> [0]The the
[1]=> [0]fence fence

替换: StringRegExpReplace("The the dog jumped over the fence fence", '(?i)\b(\w+)\s\1\b', '\1')

替换结果(替换参数为 \1 ): The dog jumped over the fence

表达式分析:

模式 说明
(?i) 不区分大小写匹配. 确保大小写不同但其他内容都相同的单词被认为是重复的.
\b 在单词边界处开始匹配.
(\w+) 匹配一个或多个单词字符. 这是第一个捕获组.
\s 与空白字符匹配.
\1 与第一个捕获组匹配.
\b 在单词边界处结束匹配.





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

blogger
该日志由 绿色风 于2016-3-29 13:38 Tuesday发表在 工具●教程 分类下。
版权所有:《绿色风's Blog》 → 《au3 正则参考 -90-正则表达式替换》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -19-字符串尾
下一篇:au3 正则参考 -17-字符串或行结尾

热门文章

相关文章

  • au3 正则参考 -58-可选构造
  • au3 正则参考 -55-普通组与命名组混合编号规则
  • au3 正则参考 -32-加号限定符
  • au3 正则参考 -14-非数字字符
  • 新编winapi大全
取消回复

发表评论

亲,头像对么?

97 + 12 =

提交中,请稍候……


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


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7239 条
    • 微语数量: 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