了解 PHP 正则表达式中的单词边界功能
当尝试使用 PHP 中的正则表达式实现单词边界以匹配内容中的特定单词时,理解他们的精确行为至关重要。然而,在测试过程中,可能会出现意想不到的结果。
在提供的示例中,表达式“^|\b@nimal/i”仅用于匹配单词“cat”,前提是它出现在另一个词。然而,结果是违反直觉的,导致人们对 PHP 如何确定单词边界感到困惑。
理解单词边界匹配的关键在于 \b 的本质。该指示符在 \w(单词字符)和 \W(非单词字符)之间的转换点匹配。为了使匹配成功,感兴趣的字符之前必须存在单词字符。
考虑第一个示例:
preg_match("/(^|\b)@nimal/i", "something@nimal", $match);
该表达式匹配“g”和“@”之间的单词边界,因为“g”是单词字符而“@”是非单词字符。
第二个示例中:
preg_match("/(^|\b)@nimal/i", "something!@nimal", $match);
没有匹配发生,因为“@”之前没有单词字符。两个都 ”!”和“@”是非单词字符。
要解决此问题,请在您想要匹配的字符之前从单词字符开始。这确保了有效的字边界的存在。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3