正则表达式,其中顺序和出现并不重要

时间:2017-07-20 15:17:52

标签: c# .net regex algorithm

我正在尝试编写一个正则表达式,当句子中的每个单词匹配 SOMEWHERE 时,它将匹配。订单并不重要。

例如: 有3个字:abc,efg,hij

这些字符串将匹配:

  

abc efg hij

     

efg abc hij

     

hij abc efg

     

foo abc efg hij bar

     

foo abc foo efg foo hij bar

     

foo efg foo abc foo hij bar

     

foo hij foo efg foo abc bar

但那些不匹配:

  

abc efg (因为缺少hij)

     

abc hij (因为缺少efg)

     

hij efg (因为缺少abc)

     

foo abc hij bar (因为缺少efg)

     

foo abc foo efg bar (因为缺少hij)

     

foo efg bar (因为缺少abc和hij)

     

abc (因为缺少efg和hij)

应该通过的测试:

  

abc efg hij

     

efg abc hij

     

hij abc efg

     

foo abc efg hij bar

     

foo abc foo efg foo hij bar

     

foo efg foo abc foo hij bar

     

foo hij foo efg foo abc bar

应该失败的测试:

  

abc efg

     

abc hij

     

hij efg

     

foo abc hij bar

     

foo abc foo efg bar

     

foo efg bar

     

ABC

     

abcefg

     

efghij

我正在尝试这个表达式:.*(?=.*abc)(?=.*efg)(?=.*hij)这基本上有效,但是!我也想知道匹配的是什么。所以:

Regex myRegex = new Regex(".*(?=.*abc)(?=.*efg)(?=.*hij)");
Match match = myRegex.Match("foo efg foo abc foo hij bar");
if (match.Success)
{
    string matchValue = match.Value;

    // in matchValue - I would like to have "efg abc hij" string.
}

因为(作为旁注)" abc"它只是一个简单的例子。 " ABC"也可以是一个非常复杂的正则表达式。

感谢您的帮助!

0 个答案:

没有答案