通过C#使用RegEx按关键字除以引号之外的关键字

时间:2014-12-16 01:36:45

标签: c# .net regex split

如果我想按照此字符串中所示的关键字Regex.Split进行拆分,那么与.NET方法AND一起使用的正则表达式是什么?

A1 = B2 AND A2 = 'M AND M' AND A3 NOT IN ( 'E1' , 'E2' )

以下是我的结果:

A1 = B2
A2 = 'M AND M'
A3 NOT IN ( 'E1' , 'E2' )

1 个答案:

答案 0 :(得分:2)

试试这个:

string str = "A1 = B2 AND A2 = 'M AND M' AND A3 NOT IN ( 'E1' , 'E2' )";
Regex regex = new Regex(@"(?<!'\w+)\sAND\s(?!\w+')");
string[] arr = regex.Split(str);

Demo

打破它,我们从我们的术语开始分裂为'AND'。然后我们使用负向lookbehind来确保它不是以'后跟一个或多个单词开头的模式的一部分。最后,我们使用负前瞻来确保它后面没有一个或多个以'。

结尾的单词的模式。