使用正则表达式忽略位于两个已知单词之间的未知单词

时间:2016-08-16 18:44:09

标签: c# regex

我刚刚开始学习正则表达式,但仍然有很多我不熟悉的概念。我们说我有以下字符串:

string s = "a minimum of eight (8) projects over the last five (5) years";

如何将字符串8忽略并在两个括号(8)放在单词项目前面时提取数字。我不想提取5。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

试试这个:

string source = "a minimum of eight (8) projects over the last five (5) years";
Regex re = new Regex(@"\((\d+)\) projects");

var result = re.Match(source).Groups[1].Value;
// result = "8";

如果您需要一个号码,只需解析它 - int.Parse(result)

答案 1 :(得分:0)

  

提取两个括号之间的数字(8)

我将假设你的主要目标是提取数字。在这种情况下,代码

resultString = Regex.Match(subjectString, @"\d+").Value;

会给你数字(作为一个字符串)。 \ d是数字,+表示一个或多个

答案 2 :(得分:0)

我会选择这样的事情:

String matchPattern = @"a minimum of .+ \((\d+)\) projects";
String replacePattern = @"a minimum of \1 projects";
String done = Regex.Replace(source, matchPattern, replacePattern);

这样做会将字符串中的eight (8)替换为8,并且对于该位置的任何字符串都会替换为括号中的数字。