EGDFree
@EGDFree

Граница слова и символ +

Добрый день.

Псевдокод на Perl:
$t = "C++, Java; JavaScript, c++, java; Oracle. Perl - power.";
$t =~ s/\b\Qc++\E/!!!Perl!!!/ig;
print $t, "\n";


Замена работает отлично, но, если заменить шаблон на "\b\Qc++\E\b" (то есть добавить в конец якорь), то совпадений больше не находится.

Подскажите, пожалуйста, что я здесь не понимаю.
  • Вопрос задан
  • 2924 просмотра
Решения вопроса 1
$t = "C++, Java; JavaScript, c++1, java; Oracle. Perl - power.";
$t =~ s/\b\Qc++\E(?=\W)/!!!Perl!!!/ig;
print $t, "\n";


\b - граница слова
\w - алфавитно-цифровой символ (любая буква, цифра или символ подчеркивания)
\W - любой символ, кроме букв, цифр и символа подчеркивания

perl считает границей слова точку, расположенную между \w и \W, независимо от того, в каком порядке следуют эти символы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы