我想在“cn=”using regex in c application最后出现之后提取字符串。所以我需要的是“cn=”和\字符最后出现之间的字符串。请注意,源字符串可能包含空格。
例子:
ou=company\ou=country\ou=site\cn=office\cn=name\ou=pet
结果:
名称
到目前为止,我已经得到了(?<=cn=).*来选择cn=后面的文本,并使用(?:.(?!cn=))+$来查找最后一次出现的文本,但我不知道如何将其组合起来以获得所需的结果。

最佳答案

您可以尝试使用以下正则表达式…

(?m)(?<=cn=)[\w\s]+(?=\\?(?:ou=)?[\w\s]*$)

regex demo
c(demo
using System;
using System.Text.RegularExpressions;

public class RegEx
{
    public static void Main()
    {
        string pattern = @"(?m)(?<=cn=)[\w\s]+(?=\\?(?:ou=)?[\w\s]*$)";
        string input = @"ou=company\ou=country\ou=site\cn=office\cn=name\ou=pet";

        foreach (Match m in Regex.Matches(input, pattern))
        {
            Console.WriteLine("{0}", m.Value);
        }
    }
}

关于c# - 正则表达式在匹配之后获取文本,该文本必须是最后一次出现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42882641/

10-13 01:16