输入文字:工学院,医学院
需要的输出:教育学院,教育学院
规则:任何带有“学校”字样的单词都需要替换为“教育”
$inputext = "school of engineering, school of medicine";
$rule ="//s/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo($outputext);
谢谢您的建议。
答案 0 :(得分:3)
无需捕获任何内容或使用环顾四周。
$inputext = "school of engineering, school of medicine";
$rule ="/school of \K[a-z]+/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo $outputext;
匹配前面的单词(of
之后的空格,并用\K
重新开始全字符串匹配,然后替换目标单词。
答案 1 :(得分:2)
当然,只需在school of
上使用 positive lookbehind 加上空格:
(?<=school of )\w+
(?<=school of )
匹配school of
之后的所有内容和一个空格。\w
表示任何单词字符,+
表示一个至一个无限数字。因此您的代码应为:
$inputext = "school of engineering, school of medicine";
$rule ="/(?<=school of )\w+/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo($outputext);
哪个输出:
教育学校,教育学校