Regex 简单正则表达式:我可以';我好像没赶上月经
代码:Regex 简单正则表达式:我可以';我好像没赶上月经,regex,preg-replace,Regex,Preg Replace,代码: $raw = "Test List: Dist. dist Disti distributor"; $repld = preg_replace('/\b(dist(\.|i?)(ributor)?)\b/i', 'ruff', $raw); echo $repld; 期望: 测试列表:环状环状环状环状环状环状 获取: 测试列表:ruff。褶边 在第一个“皱褶”之后,有一段时间我似乎无法理解。 诚然,我不是regex-wiz,但我认为\。会是一个匹配:) 我哪里出错了?\b与之间的部分不
$raw = "Test List: Dist. dist Disti distributor";
$repld = preg_replace('/\b(dist(\.|i?)(ributor)?)\b/i', 'ruff', $raw);
echo $repld;
期望:测试列表:环状环状环状环状环状环状 获取:
测试列表:ruff。褶边 在第一个“皱褶”之后,有一段时间我似乎无法理解。
诚然,我不是regex-wiz,但我认为
\。
会是一个匹配:)
我哪里出错了?
\b
与
之间的部分不匹配。因为这不是一个词的界限
将\.
移过\b
:
$repld = preg_replace('/\b(disti?(ributor)?)\b\.?/i', 'ruff', $raw);
当然,现在它与
分发服务器匹配。
这可能是您不想要的。但是,即使您的原始代码与distiributor
匹配,您可能也不需要。匹配分发服务器。
在这种情况下不会导致任何问题。谢谢。你能进一步澄清为什么它不匹配吗?我正在努力理解解释。通过忽略本例中未使用的所有大小写,简化字符串“Dist.”
的regexp,它是/\bdist\。\b/I
。所以\b
在
之后和``之前匹配-记住\b
是零宽度模式,所以它不匹配特定的字符或字符串,它只是在两个字符之间的某一点匹配。但是\b
始终匹配单词边界,这意味着它前面必须有一个字母,后面必须有一个字母;和``都不是字母。还有更清楚的吗?水晶!!非常感谢。