PHP: настроить регулярное выражение, чтобы добавить символ в конце каждого слова

1

У меня есть регулярное выражение:

// Before: "Foo Bar Test";
$str = preg_replace( "/(^| )(\w)/", '$1+$2', $str );
// After: "+Foo +Bar +Test";

Можно ли добавить символ "*" в конце каждого слова?

Результат, который я ищу, это:

// +Foo* +Bar* +Test*

Можно ли сделать это в том же регулярном выражении? Или мне нужно использовать новую?

Теги:

1 ответ

3
Лучший ответ

Ты можешь сделать:

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

чтобы получить тот же результат.

  • 1
    Большое спасибо за Ваш ответ! Это работает отлично! :)
  • 1
    Вы , вероятно , можно упростить это preg_replace('/\w+/', '+$0*', $str)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню