正则表达式匹配多个模式与前缀和后缀

时间:2018-03-31 12:29:22

标签: c# regex

我有一个像这样的字符串

  

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

我需要获取前缀(Lock)和后缀(Unlock)

之间的所有字符串

我需要

  1. 项目回复
  2. 请求
  3. 我在c#工作并尝试了以下

    1. (?:(锁定))(。*)(?:(解锁))

    2. (小于?=(锁定))(。*)(?=(解锁))

    3. 不确定放在中间部分代替(。*)

1 个答案:

答案 0 :(得分:1)

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

C#中的示例代码:

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);
}

结果:

enter image description here