正则表达式:检查字符串表达式,然后过滤掉值

时间:2017-07-11 15:44:19

标签: c# regex

尝试找出与正则表达式匹配,然后从该字符串中获取值。

字符串值将是这样的: 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] +)。

2 个答案:

答案 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);