我如何使用.NET中的正则表达式从字符串中提取子字符串

时间:2014-10-16 06:16:50

标签: c# asp.net .net regex

我想使用正则表达式从字符串中提取子字符串ie。以下输入/输出列表显示了我真正想要的内容。我需要从字符串中提取dept过滤条件。 这里的单词 [dept] 是常量。那么正则表达式在这种场景中提取子字符串的用途是什么

    Input------------------------------------------------Output 

    Some conditions And [dept]=IT                        [dept]=IT
    Some conditions And [dept]=IT Or [dept]=Account      [dept]=IT Or [dept]=Account
    Some conditions And [dept] IN ('IT','Account')       [dept] IN ('IT','Account')

    [dept]=IT And some conditions                        [dept]=IT
    [dept]=IT Or [dept]=Account And some conditions      [dept]=IT Or [dept]=Account 
    [dept] IN ('IT','Account') And some conditions       [dept] IN ('IT','Account')

2 个答案:

答案 0 :(得分:2)

这可能接近你的目标

(\[dept\]=\w+)( (Or)|(And))?|(\[dept\] IN \(.+?\))

它匹配您的样本输入,如下所示,分组为()。

([dept]=IT) 
([dept]=IT Or) ([dept]=Account) 
([dept] IN ('IT','Account'))

在您的脚本中,您可以加入每一行的群组,即加入([dept]=IT Or) ([dept]=Account)

但是如果在评论中建议您确实正在解析SQL,那么有一些SQL解析器可以让您准确访问查询WHERE表达式。

答案 1 :(得分:1)

\[dept\].*(?=\s+\bAnd\b)|\[dept\].*(?=$)

试试这个。看看演示。

http://regex101.com/r/dZ1vT6/41