【问题标题】:Regular Expression (match word + some number) C#正则表达式(匹配单词+某个数字)C#
【发布时间】:2015-09-04 03:02:34
【问题描述】:

很抱歉这样做是向所有正则表达式专家询问的快速方法:)

我可以使用什么 C# 正则表达式来匹配单词结尾 + 某个数字

例如。字符串结尾与“故事”+ 0 个或更多数字匹配

"ThisIsStory1"    = true
"ThisIsStory2000" = true
"ThisIsStory"     = true
"Story1IsThis"    = false
"IsStoryThis1"    = false

希望这是有道理的

我可以插入 C# 的正则表达式会很棒。

谢谢

【问题讨论】:

  • +1 承认这是最快的方法 :)

标签: c# regex


【解决方案1】:

你需要这样的东西Story[0-9]*$

所以它匹配故事(忽略它之前的任何内容,您可能需要添加更多),然后匹配故事和字符串末尾之间的 0 个或更多数字。

【讨论】:

    【解决方案2】:

    试试[A-Za-z]*Story[0-9]*

    如果您想检查整行,^[A-Za-z]*Story[0-9]*$

    【讨论】:

    • 我不知道特定于 C# 的正则表达式,但我知道在其他语言中,? 表示“零或一”; “零个或多个”将是 *
    • 它也不匹配字符串的结尾,所以 FirstStory123MoreStory 会在不应该的时候返回 true。
    【解决方案3】:

    匹配故事前的字符数,然后匹配故事????使用这个:

    "[A-Za-z]*(s|S)tory\d*$"
    

    【讨论】:

      【解决方案4】:
      string compare = "story1withANumber";
      Regex regex = new Regex(@"[A-Za-z]+Story[0-9]*");
      
      if (regex.IsMatch(compare))
      { 
          //true
      }
      
      regex = new Regex("[0-9]");
      
      if (regex.IsMatch(compare))
      { 
          //true
      }
      

      【讨论】:

        【解决方案5】:

        符合您标准的 .NET 正则表达式是:

        Story\d*\b
        

        (如果需要,请使用 Regex.IgnoreCase 选项。)

        \b 匹配单词边界,所以Story1IsThis 不会匹配,但ThisIsAStory1 会。单词“Story”不需要结束字符串,因此字符串"ThisIsAStory234 ThisIsNot" 将匹配Story234

        【讨论】:

          猜你喜欢
          • 2011-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-21
          • 1970-01-01
          • 2010-11-15
          • 2012-01-06
          • 1970-01-01
          相关资源
          最近更新 更多