Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用前缀和后缀匹配多个模式的正则表达式_C#_Regex - Fatal编程技术网

C# 使用前缀和后缀匹配多个模式的正则表达式

C# 使用前缀和后缀匹配多个模式的正则表达式,c#,regex,C#,Regex,我有一根这样的绳子 这是(锁定)项目响应(解锁)和(锁定)请求(解锁) 我需要得到前缀(Lock)和后缀(Unlock)之间的所有字符串 我需要去 项目响应 请求 我在c#工作,并尝试了以下方法 (?:(锁定))(.*)(?:(解锁)) (?正则表达式:(?:\(Lock\)(.*?(:\(Unlock\) C#中的示例代码: var r=newregex(@“(?:\(Lock\)(.*?(:\(Unlock\))”); MatchCollection mc=r.Matches(“这是(锁)项

我有一根这样的绳子

这是(锁定)项目响应(解锁)和(锁定)请求(解锁)

我需要得到前缀(Lock)和后缀(Unlock)之间的所有字符串

我需要去

  • 项目响应
  • 请求
  • 我在c#工作,并尝试了以下方法

  • (?:(锁定))(.*)(?:(解锁))

  • (?正则表达式:
    (?:\(Lock\)(.*?(:\(Unlock\)

    C#中的示例代码:

    var r=newregex(@“(?:\(Lock\)(.*?(:\(Unlock\))”);
    MatchCollection mc=r.Matches(“这是(锁)项响应(解锁)和(锁)请求(解锁)”;
    对于(int i=0;i
    结果:


    你需要让它成为非贪婪的
    *?
    你能检查我的答案,看看它是否符合你的要求吗?@zackraiyan:谢谢你的回答,先生,但我正在寻找一种更通用的方法,而不是适用于这个确切的字符串的方法,但是如果你有
    (锁定)
    (解锁)我的解决方案为什么不起作用呢
    在.NET正则表达式中的ur字符串中,(?>([^(]*)在(.*)的位置看起来很好。然后完整正则表达式将是(?([^(]*)(?=(Unlock\)\%28Lock\%29%29%28%3f%3E%28[^%28]*%29%28%3f%3d\%28Unlock\%29&i=This+is+a+%28Lock%29项目+响应%28Unlock%29+和+%28Lock%29请求%28Unlock%29%29
    var r = new Regex(@"(?:\(Lock\))(.*?)(?:\(Unlock\))");
    MatchCollection mc = r.Matches("This is a (Lock)item response(Unlock) and (Lock)request(Unlock)");
    
    for(int i = 0; i < mc.Count; i++)
    {
        // Groups[0] always contains the whole match
        // Groups[1] contains the capturing match
        Console.WriteLine(mc[i].Groups[1].Value);
    }