正则表达式,直到一个特定的单词

本文关键字:一个 单词 正则表达式 | 更新日期: 2023-09-27 17:54:01

我在一个非常大的字符串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的数据我应该添加上面的正则表达式来获得我想要的数据吗?

正则表达式,直到一个特定的单词

如果您的结束锚为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"];
    }
}

请试试这个

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的组中,因此,如果输入字符串匹配,您可能会在按名称匹配的组集合中找到该值。