Простое регулярное выражение:
\w+
Соответствует строке символов «слово». Это почти что вы хотите.
Это немного точнее:
\w(?<!\d)[\w'-]*
Соответствует любому числу символов слова, гарантируя, что первый символ не был цифрой.
Вот мои спички:
1 LOLOLOL
2 ВЫ
3 БЫЛ
4 PWN3D
5 einszwei
6 дрей
Теперь, это больше похоже на это.
EDIT:
Причиной такого негативного взгляда является то, что некоторые разновидности регулярных выражений поддерживают символы Юникода. Использование [a-zA-Z] пропустит довольно много «словесных» символов, которые желательны. Разрешение \w
и запрещение \d
включают в себя все символы Юникода, которые могли бы начать слово в любом блоке текста.
РЕДАКТИРОВАТЬ 2:
Я нашел более краткий способ получить эффект негативного внешнего вида: двойной отрицательный класс символов с единственным отрицательным исключением.
[^\W\d][\w'-]*(?<=\w)
Это то же самое, что и выше, за исключением того, что оно также гарантирует, что слово оканчивается символом слова. И, наконец, есть:
[^\W\d](\w|[-']{1,2}(?=\w))*
Обеспечение наличия в строке не более двух несловесных символов. Ака, это соответствует «слово вверх», но не «слово вверх», что имеет смысл. Если вы хотите, чтобы оно совпадало со словом «вверх», но не со словом «вверх», вы можете изменить 2
на 3
.