【问题标题】:Please explain this regex to me请向我解释这个正则表达式
【发布时间】:2012-01-13 09:37:00
【问题描述】:

我遇到以下将字符串拆分为“令牌”的方法:

$tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);

有人可以向我解释一下这与此有何不同:

$tokens = explode(' ', $string);

任何帮助将不胜感激:-)

【问题讨论】:

    标签: php regex explode preg-split


    【解决方案1】:

    [^\-_A-Za-z0-9]+ 的字面意思是:

    匹配一个或多个不是-_ 或字母A 到Z(大写与否)或数字的单个字符。

    preg_split 将根据与上述内容的匹配来拆分输入,但 explode 只会在空白文字上拆分。还有其他字符未从正则表达式中排除,preg_split 将拆分,但 explode 不会,因此生成的数组可能会有所不同。

    【讨论】:

    • \ 不是将在匹配中使用的字符之一。它在那里是为了逃避 - 字符。
    【解决方案2】:

    您提供的正则表达式:

    $tokens = preg_split("/[^\-_A-Za-z0-9]+/", $string);
    

    将使用不是破折号 (-)、下划线 (_)、字母(小写或大写)或数字的分隔符将输入字符串拆分为标记。

    鉴于:

    $tokens = explode(' ', $string);
    

    只会将字符串拆分为使用空格作为分隔符的标记。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-16
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多