尝试找出与正则表达式匹配,然后从该字符串中获取值。
字符串值将是这样的: computerFileHardware20131211.pdf computerFileSoftware20131322.pdf computerFileEngineering20232.pdf
Regex regex = new Regex(@"computerFile[^[A-Za-z]+$]([^0-9]+)\.pdf");
Match match = regex.Match("computerFileHardware20131211.pdf");
if (match.Success)
{
Console.WriteLine(match.Value);
}
所以我要做的就是确保我可以匹配正则表达式,然后能够过滤掉数字值。例如,对于computerFileHardware20131211.pdf,数值应为20131211。
我的正则表达式并不是很好。我认为我的第一个障碍是找出正则表达式。我在某处读到你在要过滤掉的字符串周围加上括号。这就是为什么我有([^ 0-9] +)。
答案 0 :(得分:1)
尝试类似https://regex101.com/r/KWiAg0/1
的内容Regex regex = new Regex(@"computerFile[A-Za-z]+([0-9]+)\.pdf");
Match match = regex.Match("computerFileHardware20131211.pdf");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
}
正则表达式可以包含"子表达式"括在括号中的。
每个子表达形成一个组。使用Groups
属性,您可以访问正则表达式捕获的各个组。
答案 1 :(得分:0)
如果您只想更换号码:
string fileName = "computerFileHardware20131211";
string pattern = "[0-9]{1,}";
string replacement = "123";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(fileName , replacement);