PowerShell正则表达式核心指南
基础模式匹配
1 | # 简单匹配示例 |
常用操作符对比
| 方法 | 作用域 | 返回类型 |
|---|---|---|
| -match | 标量匹配 | 布尔 |
| -replace | 替换操作 | 字符串 |
| Select-String | 流式处理 | MatchInfo |
典型应用场景
- 日志文件中的错误代码提取
- 配置文件参数值替换
- 结构化文本数据解析
- 输入验证中的格式检查
性能优化建议
1 | # 避免重复编译正则表达式 |
1 | # 简单匹配示例 |
| 方法 | 作用域 | 返回类型 |
|---|---|---|
| -match | 标量匹配 | 布尔 |
| -replace | 替换操作 | 字符串 |
| Select-String | 流式处理 | MatchInfo |
1 | # 避免重复编译正则表达式 |
1 | # 位置参数示例 |
| 验证类型 | 适用场景 | 错误提示 |
|---|---|---|
| [ValidateSet] | 限定取值范围 | 明确选项 |
| [ValidatePattern] | 正则匹配 | 模式说明 |
| [ValidateRange] | 数值范围控制 | 边界提示 |
1 | # 未处理参数缺失错误 |
1 | function Get-UserInfo { |
1 | function Process-Files { |
1 | # 邮箱验证正则 |
| 字符 | 功能描述 | 示例 |
|---|---|---|
| . | 匹配任意字符 | a.c → abc |
| \d | 匹配数字 | \d{3} → 123 |
| \w | 匹配字母数字下划线 | \w+ → abc123 |
| ^ | 匹配行首 | ^Start |
| $ | 匹配行尾 | end$ |
1 | # 日期格式转换 |
1 | # 测量命令执行时间 |
| 方法 | 适用场景 | 效率提升 |
|---|---|---|
| 管道优化 | 大数据流处理 | 30%-50% |
| 类型强转 | 频繁类型转换 | 20%-40% |
| 数组预分配 | 动态集合操作 | 50%-70% |
1 | # 低效的对象属性访问 |
1 | # 字符串拼接优化 |
| 方法 | 描述 | 示例 |
|---|---|---|
| Split() | 分割字符串 | ‘a,b,c’.Split(‘,’) |
| Replace() | 替换字符 | ‘123-456’.Replace(‘-‘,’’) |
| Substring() | 截取子串 | ‘abcdef’.Substring(2,3) |
1 | # 拼接方式效率对比 |
1 | # 显示特殊字符 |
1 | # ForEach循环示例 |
| 循环类型 | 10万次迭代耗时 | 内存占用 |
|---|---|---|
| ForEach-Object | 1.2s | 85MB |
| For循环 | 0.8s | 45MB |
| While循环 | 0.7s | 40MB |
1 | # 设置循环断点 |
1 | # 全局作用域示例 |
| 修饰符 | 作用范围 | 生命周期 |
|---|---|---|
| global | 全局可见 | 永久 |
| script | 脚本文件内 | 脚本周期 |
| private | 当前代码块 | 瞬时 |
| local | 默认作用域 | 瞬时 |
1 | # 错误的作用域继承示例 |