是否可以在php中使用正则表达式替换词组后面的单词?

时间:2018-10-02 21:16:05

标签: php regex preg-replace

输入文字:工学院,医学院

需要的输出:教育学院,教育学院

规则:任何带有“学校”字样的单词都需要替换为“教育”

$inputext = "school of engineering, school of medicine"; 
$rule ="//s/";
$replacetext = "education";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo($outputext);

谢谢您的建议。

2 个答案:

答案 0 :(得分:3)

无需捕获任何内容或使用环顾四周。

演示:https://3v4l.org/uWZgW

$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);

哪个输出:

  

教育学校,教育学校

可以在Regex101 here 和3val here 上运行。