[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2017-8-20 14:59 编辑

一个是 PowerShell 内置的替换运算符,一个是 .NET Framework 中 System.Text.RegularExpressions.Regex 类的静态方法。

-replace 替换运算符一次性替换全部(global 全局标志为 True),Replace 方法可以替换其中的某一次或几次。
  1. ([regex]'(?i)a').Replace('aaaa', 'b', 1, 2) #替换 "aaaa" 中的 "a" 为 "b",替换1次,从第3个字符开始替换
复制代码
如果需要对捕获的子匹配调用其它函数方法,比如将子匹配转换大小写,-replace 替换运算符办不到,只能调用 Replace 方法。
这种办法是错误的:
  1. 'how are you' -replace '\b[a-z]', '$&'.ToUpper()
复制代码
这种办法是正确的:
  1. [regex]::Replace('how are you', '\b[a-z]', {param($a); $a.Groups[0].Value.ToUpper()})
复制代码
另外,.net 正则表达式中的一些选项,如 RightToLeft、ECMAScript、CultureInvariant 等不能用于 -replace 运算符,因为这些选项没有提供内联字符。
1

评分人数

TOP

返回列表