我有输入字符串:
"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
关于c# - 正则表达式匹配整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856295/