查找字符串但返回前一个字符串

时间:2012-01-18 10:46:33

标签: c# regex

我正在尝试在文本文件中找到一个字符串。我正在使用RegEx方法。但我需要将找到的String之前存在的Previous String作为Method Output。我怎么能用c#做到这一点?谁能给我一些想法?

例如:
在该文本文件中是一行'routerbl router0000;'
我正在搜索'router0000;',如果我找到'router0000;',那么我想获得'routerbl'

5 个答案:

答案 0 :(得分:4)

你有两种可能性

  1. 使用capturing group匹配您想要的内容,类似

    (\S+)\s+router0000
    

    您将在捕获组1

  2. 中找到您的结果
  3. 匹配您的模式,并使用lookahead

    确保以下字符串
    \S+(?=\s+router0000)
    

    这只会匹配您想要的部分。

答案 1 :(得分:1)

它不会回答你关于正则表达式的问题,但如果唯一的规则是在特定的子字符串之前返回字符串的第一部分,那么你可以使用比regexp更简单的东西:

string test = "routerbl router0000;";
string matchingValue = "router000";

int matchingValueIndex = test.IndexOf(matchingValue);
string leftPart;
if (matchingValueIndex >= 0)
{
    leftPart = test.Substring(0, matchingValueIndex);
}

答案 2 :(得分:0)

我可以想到两种方式

  • 使用群组(routerbl) (router0000),并使用第一组
  • 肯定lookaheadrouterbl (?=router000)

答案 3 :(得分:0)

使用表达式(.*)(?=\srouter0000)查找router0000文本之前的文本。

string resultString = null;
try
{
    resultString = Regex.Match(part, @"(.*)(?=\srouter0000)", RegexOptions.Multiline).Value;
} catch (ArgumentException ex)
{
    // Syntax error in the regular expression
}

答案 4 :(得分:-1)

假设这是一个完整的一行的例子:

Regex expression = new Regex("(.*) router0000");