【问题标题】:php preg_split, "nothing to repeat" errorphp preg_split,“没有重复”错误
【发布时间】:2012-08-09 11:16:19
【问题描述】:

我需要用多个可能的分隔符分割字符串

$output = preg_split( "/(\^|+)/", "54654561^uo_sgzg@zrgher.com" );

-> ("54654561", "uo_sgzg@zrgher.com")

$output = preg_split( "/(\^|+)/", "54654561+ghkkgzg@zrgher.com" );

-> ("54654561", "ghkkgzg@zrgher.com")

但是这个正则表达式 "/(\^|+)/" 失败:PHP Warning: preg_split(): Compilation failed: nothing to repeat at offset 3 出于某种原因,但是它基于这个答案 Php multiple delimiters in explode

这个工作$output = preg_split("/[\^|+]/", "54654561^MYMED_sgzg@zrgher.com" ); 是用多个分隔符分割的正确方法吗?

编辑:抱歉,我刚刚意识到它是这样工作的 $output = preg_split("/(\^|\+)/", "54654561^MYMED_sgzg@zrgher.com" );

【问题讨论】:

  • 删除您的问题,如果不再是问题,请自行回答。

标签: php regex split preg-split


【解决方案1】:

如果您要匹配的是单个字符,我实际上会选择[\^\+] 选项。

演示:http://ideone.com/ftXSS

[] 语法称为字符类或字符集,专门用于满足您的需要。

“字符类”只匹配几个字符中的一个。要匹配 ae,请使用 [ae]。您可以在gr[ae]y 中使用它来匹配graygrey

http://www.regular-expressions.info/quickstart.html

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2011-02-08
    相关资源
    最近更新 更多