我正在尝试为表达式构建正则表达式,以获取Boost Mobile或BoostMobile的值,无论哪个存在。
有什么建议吗?
答案 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
- 尾随字边界