1 回答
TA贡献1829条经验 获得超9个赞
该Regex.Replace(content, @"ModuleVersion\s+=\s+'(\d+)\.(\d+)\.(\d+)'", "$1.$2.$3")行代码对ModuleVersion\s+=\s+'(\d+)\.(\d+)\.(\d+)'模式执行正则表达式搜索,即搜索ModuleVersion, 1+ 个空格, =, 1+ 个空格, ',然后将 1+ 个数字捕获到 Group 1 中,然后匹配一个点,然后将 1+ 个数字捕获到第 2 组,再次匹配一个点并将另外 1+ 个数字放入第 3 组并匹配一个'字符,然后将整个匹配替换为第 1 组值.、第 2 组值.和第 3 组值。
因此,如您所见,这对换行符没有任何作用,并且捕获这 3 个组毫无意义,因为您仍然使用点作为分隔符。
你似乎正在做的是提取一个值。使用Regex.Match提取单件的文本:
var version = "";
var m = Regex.Match(content, @"(?<=ModuleVersion\s+=\s+')\d+(?:\.\d+)+");
if (m.Success) {
version = m.Value;
}
请参阅正则表达式演示。这里,(?<=ModuleVersion\s+=\s+')是一个需要ModuleVersion, 1+ 空格, =, 1+ 空格并'立即出现在当前位置左侧的后视。
请注意,您也可以使用捕获方法并从match.Groups[1].Value以下位置获取结果:
var version = "";
var m = Regex.Match(content, @"ModuleVersion\s+=\s+'(\d+(?:\.\d+)+)");
if (m.Success) {
version = m.Groups[1].Value;
}
- 1 回答
- 0 关注
- 199 浏览
添加回答
举报