Поиск отдельных слов
В регулярных выражениях словом называется последовательность символов \w. В множество \w входят все строчные и прописные латинские буквы, десятичные цифры и знак подчерка: [a zA Z0 9_]. К этому множеству относятся все символы, считающиеся буквами в той локальной установке, которая используется. Для ActiveState Perl под Windows для этого достаточно написать директиву
use locale;
и все русские буквы (включая буквы ё и Ё) в кодировке Windows-1251 также будут считаться буквами.
Если вы под буквами понимаете что-то другое (например, вы не считаете символ подчерка за букву), то определите соответствующий класс. Если вас интересуют все непробельные символы, то используйте эскейп-последовательность \S.
Эскейп-последовательность \w соответствует ровно одной "букве". Для слов применяйте шаблон \w+. Слово всегда ограничено с обеих сторон мнимыми символами \b - границами слов. Действие этих якорей также зависит от локальной установки операционной системы. Для гарантии того, что совпадение со словом начнется и закончится на его границе, можно применять шаблон \b\w+\b. Чтобы уничтожить ненужные сохраненные состояния, можно также использовать атомарную группировку: \b(?>\w+)\b.
В Perl мнимые символы, которые соответствуют началу слова и его концу, не различаются - оба обозначаются как \b. В некоторых языках программирования для этих символов существуют отдельные якоря. Но можно самому определить такие мнимые символы, исходя из их смысла. Вот якорь, который соответствует началу слова:
(?<!\w)(?=\w)
Слева нет буквы, а справа она есть.
А вот якорь, который соответствует концу слова:
(?<=\w)(?!\w)
Слева есть буква, а справа буквы нет.
Я надеюсь, вы уже понимаете разницу между выражениями (?!\w) и (?=\W). В первом случае справа может и ничего не стоять (конец текста), а второй случай требует, чтобы справа стоял символ, который не является буквой.