查找一个字符串,但返回上一个字符串

本文关键字:字符串 返回 上一个 一个 查找 | 更新日期: 2023-09-27 18:20:33

我试图在文本文件中找到一个字符串。我正在使用RegEx方法。但是我需要获取Previous String,它存在于找到的String之前,作为Method Output。我该如何使用c#?有人能给我点主意吗?

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

查找一个字符串,但返回上一个字符串

有两种可能性

  1. 使用捕获组匹配您想要的内容,类似于

    ('S+)'s+router0000
    

    您将在捕获组1 中找到您的结果

  2. 匹配您的模式,并确保以下字符串具有前瞻

    'S+(?='s+router0000)
    

    这将只匹配你想要的部分。

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

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

我可以想出两种方法

  • 使用组(routerbl) (router0000),并使用第一个组
  • 积极前瞻:routerbl (?=router000)

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

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

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

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