[正则表达式] 快速匹配替换混合字串

790 阅读1分钟

为建立中文知识库加块砖        ——中科大胡不归

问题描述

如何快速匹配和替换包含字母、数字、常见符号的混合字串?

案例一

实现将Foreground="#8FFF"Foreground="White" 全替换为Foreground="{DynamicResource ForegroundBrush}"

1. 确定对象:

Foreground="#8FFF"
Foreground="White"

2. 找出固定部分:

Foreground=""

3. 描述变化部分

变化部分 #8FFFWhite为#开头的字母数字或纯字母。

  • 引号内包含任意大小写的字符和数字用:\w,相当于 [A-Za-z0-9_] :
Foreground="\w+"
  • ? 处理符号 # 存在或不存在:
Foreground="#?\w+"

结束。

在IDE上的匹配效果:

案例二

实现将Console.WriteLine($"Voice name: '{voiceInfo.Name}'");全替换为$"Voice name: '{voiceInfo.Name}'".PrintGreen();

1. 确定对象:

Console.WriteLine($"Voice name: '{voiceInfo.Name}'");

2. 找出固定部分:

Console.WriteLine();

3. 描述变化部分

表示 $"Voice name: '{voiceInfo.Name}'"

  • $"Voice name: '{voiceInfo.Name}'"是包含字符数字常见字符的字串,超过 \w+ 的表示范围,所有用 .+
Console.WriteLine(.+);
  • 因为需要替换操作,需要加 () 框住引用的部分:
Console.WriteLine((.+));
  • () 是正则的转义字符,所以加 \ ,以避免多取前后一对括号:
Console.WriteLine\((.+)\);
  • 替换操作:
$1.PrintGreen();

结束。

在IDE上的匹配效果:

144204.png

参考文章

1、正则表达式 - 元字符