0

代码:

$raw = "Test List: Dist. dist Disti distributor";
$repld = preg_replace('/\b(dist(\.|i?)(ributor)?)\b/i', 'ruff', $raw);
echo $repld;

期望:
测试列表:ruff ruff ruff ruff

获取:
测试清单:ruff。ruff ruff ruff

在我似乎无法弄清楚的第一个“ruff”之后有一段顽固的小时期。
当然,我不是正则表达式专家,但我认为\.会是一场比赛:)

我哪里错了?

4

1 回答 1

2

\b不会匹配 和 之间的.部分。因为那不是单词边界。

移动\.过去\b

$repld = preg_replace('/\b(disti?(ributor)?)\b\.?/i', 'ruff', $raw);

虽然当然现在它匹配Distributor.你可能不想要的。但是话又说回来,即使您的原始代码也与distiributor您可能不想要的匹配。

于 2013-04-05T14:27:03.173 回答