我正在尝试编写一个正则表达式,当句子中的每个单词匹配 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"也可以是一个非常复杂的正则表达式。
感谢您的帮助!