Как попасть в предложение к лексеме с пробелом?

#regex

#регулярное выражение

Вопрос:

Например — предложение, где | граница предложения. В конце предложения после символа . располагается символ пробела :

 |This is one. |
  

Как разделить эту строку, как это:

 [This ]
[is ]
[one. ]
  

Что я делаю (регулярное выражение):
Регулярное выражение1:

 (.s|s)
  

Результат:

 0: [This]
1: [is]
2: [one]
  

Регулярное выражение2:

 (?<=[sp{Punct}])
  

Результат:

 0: [This ]
1: [is ]
2: [one.]
3: [ ]
  

но это не разделяет слова должным образом.

Ответ №1:

Вы можете разделить с (?<=s)(?=w )

Пример кода (python)

 import re
a="This is one. "
print(re.split("(?<=s)(?=w )",a))
  

Вывод

 ['This ', 'is ', 'one. ']
  

Ответ №2:

Вы не указали, какой движок регулярных выражений вы используете. Так что дать вам точное решение совершенно невозможно.

Разделяющее регулярное выражение, которое вам нужно в pcre, выглядит следующим образом

(?<=s)b

Положительный просмотр назад проверяет наличие пробела перед границей слова, но не включает его в шаблон. Таким образом, конечные пробелы не будут удалены.

Ответ №3:

Регулярное выражение:

 (?<=[s])
  

для приговора:

 "This is one. "
  

возвращает результат:

 0: [This ]
1: [is ]
2: [one. ]