【问题标题】:Regular expression for matching start of string with用于匹配字符串开头的正则表达式
【发布时间】:2012-01-19 20:47:48
【问题描述】:

我需要帮助来构建正则表达式

以 pcm_ 或 PCM_ 开头的字符串

随便猜!!!

【问题讨论】:

  • 是否允许 pCM 或 PCm 或 PcM 等?

标签: c# regex vbscript


【解决方案1】:

无需使用正则表达式。使用String.startsWith() 方法。

if (!str.StartsWith("pcm_",StringComparison.InvariantCultureIgnoreCase)) {}

【讨论】:

    【解决方案2】:
    if (String.startsWith("pcm_") || String.startsWith("PCM_"))
    {
        //...
    }
    

    【讨论】:

      【解决方案3】:

      正则表达式解决方案是

      ^(?i)(?!pcm_)
      

      (?i)RegexOptions.IgnoreCase 的内联版本

      ^ 匹配字符串的开头

      (?!pcm_) 是一个否定的前瞻断言,如果字符串不以“pcm_”或“PCM_”开头(但也是“PcM_,...)”,则该断言为真

      【讨论】:

      • 这个很好的提示谢谢。我已经将它用于 vbscript ^(?![pP][cC][mM]_)
      【解决方案4】:

      正如已经指出的那样,您不需要为此使用正则表达式,但如果您愿意,可以使用带有负前瞻的正则表达式,如下所示:^(?!pcm_|PCM_).*$

      【讨论】:

        【解决方案5】:

        【讨论】:

        • 这将允许“!pcm_”和“!PCM_”在字符串的开头。
        • 您的修改并没有改善表达式。 “!”在正则表达式中只是字符“!”而不是 NOT 运算符,正则表达式中也没有 AND 运算符。
        【解决方案6】:

        这里不需要正则表达式,只需使用 String.StartsWith http://msdn.microsoft.com/en-us/library/system.string.startswith.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-15
          • 2014-08-15
          • 2015-02-26
          • 2018-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-12
          相关资源
          最近更新 更多