我对使用正则表达式还很陌生,但是我一直想解决一个问题。我在了解正在发生的事情时遇到问题,希望有人可以向我提示正确的方向。
我想要达到的目标:
为了避免在视图中出现重复,我想检查属性名称是否包含相应的属性单元。例如,如果$attribute['name'] = "Cutting speed (in m/Min.)"
和attribute['unit'] = "m/min"
属性单位不应该显示,因为名称中已经提到了它。
我如何实现这一目标:
我正在使用以下正则表达式检查属性单元:~\b' . attribute['unit'] . '\b~i'
对于上面提到的示例,这很好用,但是如果单位是特殊字符,例如%
或"
,则效果不佳。
问题
在测试特殊字符问题时,我遇到了以下现象:
[如果我使用此正则表达式/\b%\b/
,则其行为与预期不符,并且与%
中的bla%bla
匹配,但与%
匹配,如果它在空格之前或之后:https://regex101.com/r/56iYEI/3
似乎%将正则表达式的行为改为相反的行为。我还测试了其他“特殊字符”(“和&”),它们似乎具有相同的效果。
我之前曾被问到这个问题(Regular Expression Word Boundary and Special Characters),并阅读了答案。我现在知道\b
检查单词边界。但是我仍然不清楚为什么它会以%
或"
出现时的方式表现出来。
问题
%
为何将\b
变成单词边界检查?%
或"
? 期待任何提示。预先感谢!