У меня есть регулярное выражение:
// Before: "Foo Bar Test";
$str = preg_replace( "/(^| )(\w)/", '$1+$2', $str );
// After: "+Foo +Bar +Test";
Можно ли добавить символ "*" в конце каждого слова?
Результат, который я ищу, это:
// +Foo* +Bar* +Test*
Можно ли сделать это в том же регулярном выражении? Или мне нужно использовать новую?
Ты можешь сделать:
$str = preg_replace( "/(^| )(\w+)\b/", '$1+$2*', $str );
echo "$str\n";
//=> +Foo* +Bar* +Test*
Создание 2-й захваченной группы как (\w+)
заставит ее захватить полное слово и положить *
после того, как $2
поместит *
в нужное место.
PS: Вы также можете использовать утверждение lookbehind:
$str = preg_replace( "/(?<= |^)(\w+)\b/", '+$1*', $str );
чтобы получить тот же результат.
preg_replace('/\w+/', '+$0*', $str)