我正在尝试在文本文件中找到一个字符串。我正在使用RegEx方法。但我需要将找到的String之前存在的Previous String作为Method Output。我怎么能用c#做到这一点?谁能给我一些想法?
例如:
在该文本文件中是一行'routerbl router0000;'
我正在搜索'router0000;'
,如果我找到'router0000;'
,那么我想获得'routerbl'
。
答案 0 :(得分:4)
你有两种可能性
使用capturing group匹配您想要的内容,类似
(\S+)\s+router0000
您将在捕获组1
匹配您的模式,并使用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)
,并使用第一组routerbl (?=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");