Skip to main content
 首页 » 编程设计

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

2024年02月13日27del

我有输入字符串:

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

我需要更换:

  • 11 飓风
  • 2 与团队 abc
  • 3 与 Vipers
  • 4 与 Dodgers
  • 1 和 Frozen 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,然后将文字 with 和 Team 文字与 $2 相加,附加 group2 的匹配项。

这里是 Regex101 demo