c# - 正则表达式匹配整数

标签 c# regex

我有输入字符串:

"Monday 11:30am,11 v 2,3 v 4"

我需要更换:

  • 11 飓风
  • 2团队 abc
  • 3Vipers
  • 4Dodgers
  • 1Frozen Rope

等等....

但我不想在 11 中将 1 替换两次。

我显然不了解正则表达式。但我试过这样的事情:

string text = File.ReadAllText(CSVpath);
text = Regex.Replace(text,
                     string.Format(@"[{0} v]", CurrentCode),
                     string.Format(@"{0} v", TeamName));
text = Regex.Replace(text,
                     string.Format(@"[v {0}]", CurrentCode),
                     string.Format(@"v {0}", TeamName));

基于上面的输入字符串,输出将是:

"Monday 11:30am,Hurricanes v Team abc,Vipers v Dodgers"

最佳答案

试试这个正则表达式:

var subject = "Monday 11:30am,11 v 2,3 v 4,5 v 6";
var replaced = Regex.Replace(subject,@"(\d+)\s*v\s*(\d+)","Team$1 with Team$2");

模式分解:

  • (\d+) 捕获数字序列并将其保存在 group1 中
  • \s*v\s* 通过两侧零个或多个空格检查 v 字符包装器。
  • (\d+) 捕获数字序列并将其保存在 group2 中

替换:

$1 用 Team 和第一组的匹配替换第一组。因此 11 将替换为 Team11,然后将文字 withTeam 文字与 $2 相加,附加 group2 的匹配项。

这里是 Regex101 demo

关于c# - 正则表达式匹配整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856295/

相关文章:

c# - 解决调用DrawImage时出现 'Out of memory'异常

c# - 指向我在 C# 中选择的变量

c# - 在包含静态字段的非静态类中触发析构函数?

c# - Windows 应用商店应用、加密、提供的用户缓冲区对于请求的操作无效

正则表达式匹配重复组 {0,2} 或 {0,4},但 {0,3} 不匹配

regex - 使用 Powershell 替换 INI 文件中的整行

c# - Linq 选择数据库中的对象存在字典键

regex - unix 中正则表达式的语法错误

RegEx - 匹配具有不同开头的数字

regex - 负向后看和方括号