正则表达式只检查每行的第一个匹配


Regular Expression to Check only 1st Match of Each Line

我有一个PHP页面,正在读取存储在MYSQL数据库表中的文本。文本可能看起来像这样

Bob: Hi blah blah
(Bob walking around)
Fred Johnson: blah blah blah
Bob: Something something: something

我想做一个preg_replace来加粗每行中第一个冒号之前的所有内容。所以在这种情况下,只有名字会被加粗最后一行的"Something Something "不会被加粗

我现在保存了每行冒号之前的所有内容

$reg='(.*'w:)';
$text = preg_replace("/".$reg."/", "<b>'${1}</b>", $text);

您可以使用:

$reg='^([^:]*:)';

^符号用于匹配一行的开头。将其前置到正则表达式的开头,它将确保匹配从当前行的开头开始:-)