我在一个非常大的字符串str
中有以下数据:
"RewrittenQuery: Word:(\"state\" \"states\" \"state s\") Word:(\"library\" \"libraries\" \"libr\" \"lib\" \"lbry\") adjust:1feature:#:\" _MetaTag_Category 11265\"\r\n"
我想要从RewrittenQuery开始直到adjust
之前的所有内容。
我写了以下代码:
Match extraction = Regex.Match(str, @"RewrittenQuery:[^\n\r]+");
以上代码能够从RewrittenQuery
中提取起点,但我不需要来自(包括)adjust
的数据
我应该添加上面的Regex以获取我想要的数据?
答案 0 :(得分:0)
请试试这个
static void TestRegEx()
{
string input = "sdsafff RewrittenQuery 1sdfs se1adjust wer aasdfsd";
Match m = Regex.Match(input, @"RewrittenQuery(?<A1>.*)adjust");
if (m.Success)
Console.WriteLine(m.Groups["A1"]);
else
Console.WriteLine("Didn't match");
}
打印1sdfs se1
正则表达式为RewrittenQuery(?<A1>.*)adjust
。部分(?<A1>.*)
接受任何符号并将它们放入名称为A1
的组中,因此如果输入字符串匹配,您可以在按名称匹配的组集合中找到此值。
答案 1 :(得分:0)
如果你的结束锚是adjust:
,你可以使用以下代码:
string pattern = @"(?<Value>RewrittenQuery:[^\n\r]+\s)(?:adjust:)";
RegexOptions regexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline;
Regex regex = new Regex(pattern, regexOptions);
string targetString = @"RewrittenQuery: Word:(\""state\"" \""states\"" \""state s\"") Word:(\""library\"" \""libraries\"" \""libr\"" \""lib\"" \""lbry\"") adjust:1feature:#:\"" _MetaTag_Category 11265\""\r\n";
foreach (Match match in regex.Matches(targetString))
{
if (match.Success)
{
var value = match.Groups["Value"];
}
}