Следующий пример взят из документов python re
re.split(r'\b', 'Words, words, words.')
['', 'Words', ', ', 'words', ', ', 'words', '.']
'\ b' соответствует пустой строке в начале или конце слова.Это означает, что если вы запустите этот код, он выдаст ошибку.
(jupyter notebook python 3.6)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-128-f4d2d57a2022> in <module>
1 reg = re.compile(r"\b")
----> 2 re.split(reg, "Words, word, word.")
/usr/lib/python3.6/re.py in split(pattern, string, maxsplit, flags)
210 and the remainder of the string is returned as the final element
211 of the list."""
--> 212 return _compile(pattern, flags).split(string, maxsplit)
213
214 def findall(pattern, string, flags=0):
ValueError: split() requires a non-empty pattern match.
Поскольку \ b соответствует только пустым строкам, split () не получает своего требования "непустое совпадение с образцом.Я видел разные вопросы, связанные с split () и пустыми строками.Некоторым я мог видеть, как вы можете захотеть сделать это на практике, например, вопрос здесь .Ответы варьируются от "просто не могу этого сделать" до (более старых) "это ошибка".
Мой вопрос такой:
Так как это все ещеПример на веб-странице Python, это должно быть возможно?возможно ли это в выпуске с передовой?
Вопрос в ссылке выше, касающейся re.split(r'(?<!foo)(?=bar)', 'foobarbarbazbar')
, был задан в 2015 году, и не было никакого способа выполнитьтребования с re.split()
, это все еще так?