PHP正则表达式显示abc或abc xyz格式

时间:2016-08-02 20:59:43

标签: php regex

我正在尝试为表达式构建正则表达式,以获取Boost Mobile或BoostMobile的值,无论哪个存在。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

在NFA正则表达式中,在未锚定的交替组中,匹配的第一个分支停止组处理,而不对照字符串检查位于右侧的其他分支。您可以在Alternation with The Vertical Bar or Pipe Symbol了解更多信息。

因此,交换值并简化您可以使用的模式

/\b(Boost \s*Mobile|Boost)\b/i

然而,这里最有效的方法是使用可选组:

/\bBoost(?:\s*Mobile)?\b/i
        ^^          ^^

请参阅regex demo

在整个正则表达式上设置i不区分大小写的修饰符。您无需在模式的开头/结尾处打开和关闭它。此外,\W*可以匹配空字符串,因此当\b起作用时,检查字边界的方式可能会失败。

模式详情

  • \b - 领先的字边界
  • Boost - 文字子字符串
  • (?:\s*Mobile)? - 一个匹配1或0序列的可选组
    • \s* - 0+ whitespaces
    • Mobile - 文字子字符串
  • \b - 尾随字边界