【问题标题】:How can I use "or", "and" in C# Regex?如何在 C# Regex 中使用“或”、“和”?
【发布时间】:2010-09-19 15:23:07
【问题描述】:

我有一个与字符串匹配的模式: 字符串模式 = @"asc" 我正在检查 SQL SELECT 查询是否有正确的语法、语义…… 我需要说,在查询字符串的末尾我可以有“asc”或“desc”。 怎么能用 C# 写呢?

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    看起来像

    new Regex("asc$|desc$").IsMatch(yourQuery)
    

    假设您要求 asc/desc 是查询的结尾。您也可以使用(?:asc|desc)$,这与单个$ 相比更简洁,但可读性较差。

    【讨论】:

      【解决方案2】:

      您需要“交替”运算符,即管道。

      例如,我相信这将表示为:

      asc|desc
      

      如果你想让它成为一个非捕获组,你可以按照正常方式进行。我不是正则表达式专家,但这是首先要尝试的。

      编辑:MSDN 有一个关于 regular expression language elements 的页面,可能会对您有所帮助。

      【讨论】:

        【解决方案3】:

        只是为了添加其他答案,您可能还想对正则表达式应用忽略大小写选项。

        string tempString = "SELECT * FROM MyTable ORDER BY column DESC";
        
        Regex r = new Regex("asc$|desc$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
        
        bool answer = r.IsMatch(tempString);
        

        【讨论】:

          【解决方案4】:

          我认为以下内容在 .Net 中可以用作正则表达式:

          asc|desc\z
          

          .. 它将匹配行尾和字符串尾。如果您只想结束字符串尝试:

          asc|desc$
          

          【讨论】:

            猜你喜欢
            • 2010-11-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-17
            • 1970-01-01
            • 2020-06-04
            相关资源
            最近更新 更多