查找一个字符串,但返回上一个字符串
本文关键字:字符串 返回 上一个 一个 查找 | 更新日期: 2023-09-27 18:20:33
我试图在文本文件中找到一个字符串。我正在使用RegEx方法。但是我需要获取Previous String,它存在于找到的String之前,作为Method Output。我该如何使用c#?有人能给我点主意吗?
例如:
在该文本文件中有一行'routerbl router0000;'
我正在搜索'router0000;'
,如果我找到'router0000;'
,那么我想得到'routerbl'
。
有两种可能性
-
使用捕获组匹配您想要的内容,类似于
('S+)'s+router0000
您将在捕获组1 中找到您的结果
-
匹配您的模式,并确保以下字符串具有前瞻
'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");