PHP,RegEx。无法获得我追求的匹配模式

时间:2015-08-02 23:04:52

标签: php regex

到目前为止,我已经尝试了我能想到的每一种组合,而我却无法弄清楚/找到合适的组合。 我正在我正在开发的聊天室中匹配“/ me”命令。

RegEx:/^\/me (.*)(\|)(.*)?$/i

使用方法: /me does something /me does something else|Hello!

到目前为止,它与第二个/ me命令用法完全匹配(即,与“|”分隔符完全匹配),但不是第一个。

有人能指出我正确的方向吗?我在这里失去了理智。

我在匹配之后 "/me does something""/me does something|Hello!"同时删除“|”如果匹配

1 个答案:

答案 0 :(得分:1)

/^\/me (.*?)(?:\|(.*))?$/i
  1. 第一行不匹配,因为它不包含|

  2. 您不能只让|成为可选项,因为正则表达式是贪婪的(在?之后添加+*使它们非贪婪,{{1使一组非捕获)

  3. 如果您打算添加其他命令,那么如果您只匹配?:并处理函数中的其余部分,它可能更具可读性