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

本文关键字:字符串 提取 正则表达式 NET | 更新日期: 2023-09-27 18:26:37

我想使用正则表达式从字符串中提取子字符串,即下面的输入/输出列表显示了我真正想要的内容。我需要从字符串中提取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')

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

这可能接近之后的情况

('[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表达式。

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

试试这个。请参阅演示。

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