【问题标题】:PHP Regular Expression to match `name[50]` to the "name" and "50" valuesPHP 正则表达式将 `name[50]` 匹配到“name”和“50”值
【发布时间】:2011-01-22 00:08:08
【问题描述】:

我正在寻找更多正则表达式帮助,以使用 PHP 函数 preg_match。我需要匹配以下字符串;

  • string[50]
  • string

理想情况下,返回的数组应该是这样的;

  • string, 50
  • string

任何帮助将不胜感激:-) 这就是我想出的,但它并没有按照我的一点正则表达式知识远程完成我的预期! /([a-z])+(\[[0-9]\])?/i

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:

    您需要将+ 放在() 中(否则您将匹配完整的字符串,只有字符串的最后一个字符会在结果组中)。还要在[0-9] 之后添加另一个+。将\[\] 移到() 之外以仅返回50(不是[50])并使用(?:)? 使[50] 成为可选而不产生组。

    /([a-z]+)(?:\[([0-9]+)\])?/i
    

    Play with it on rubular

    【讨论】:

    • 耶!谢谢。如果没有 [] ,我怎么能让它匹配呢? :)
    • @tarnfeld 这也将匹配string50,我不确定你的意思。请参阅我的编辑,这可能是您更好的解决方案。
    • 你的编辑让它变得更好+很好的解释。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 2023-02-12
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2016-04-10
    • 2011-08-23
    相关资源
    最近更新 更多