Предполагая, что ваш движок регулярных выражений поддерживает утверждения типа lookahead / lookbehind, вы можете использовать что-то вроде следующего:
(^|(?<= )[a-zA-Z]+($|(?= ))
Вот краткое описание того, что делает каждый компонент:
(^|(?<= ))
: здесь написано "если слово начинается здесь, мы заинтересованы".В частности,
^
: соответствует началу строки или
(?<= )
: соответствует любой точке, которой предшествует пробел, без фактического использования самого пробела.Это называется положительным взглядом за утверждением.
[a-zA-Z]+
: Это должно быть очевидно, но оно соответствует любому ряду последовательных буквенных символов ASCII.
($|(?= ))
: Это говорит "если словоздесь закончено, мы сделали ".В частности,
$
: соответствует концу строки, или
(?= )
: соответствует любой точке, за которой следует пробел, фактически не занимая само пространство.Это называется положительным косвенным утверждением.
Обратите внимание, что этот конкретный регулярное выражение не считает слово словом, если за ним следует пунктуация.На самом деле это может быть не то, что вы хотите, но вы описали проверку пробелов, так что это то, что делает регулярное выражение.Если вы хотите поддержать слова, сопровождаемые простой пунктуацией, вы можете изменить этот последний атом на
($|(?=[ .,!?]))
, который будет соответствовать слову, если за ним следует пробел, точка, запятая, восклицательный знак или вопросотметка.Вы можете быть более сложным, если хотите.