В настоящее время я немного изучаю регулярное выражение в python в курсе, который я провожу в Интернете, и я изо всех сил пытаюсь понять конкретное выражение - я искал документы по python и не уверен, почему я возвращаю не- элементы пунктуации, а не знаки препинания.
Код:
import re
test_phrase = "This is a sentence, with! unnecessary: punctuation."
punc_remove = re.findall(r'[^,!:]+',test_phrase)
punc_reomve
OUTPUT: ['This is a sentence',' with',' unnecessary',' punctuation.']
Кажется, я понимаю, что делает каждый персонаж. т.е. [] — это набор символов, а ^ означает, что начинается с. Итак, все, что начинается с ,!: будет возвращено? (или, по крайней мере, так я, вероятно, ошибочно интерпретирую это) И + вернет один или несколько шаблонов. Но почему вывод не возвращает что-то вроде:
OUTPUT: [', with','! unnecessary',': punctuation.']
Любое объяснение действительно ценится!
Внутри класса символов ^
не означает «начать с»: это означает «не». Таким образом, RegEx соответствует последовательностям одного или нескольких символов, отличных от ,1:
.
В этом случае
^
не является началом строки. Это будет отрицать[,!:]
, поэтому[^,!:]
означает любой символ, кроме,
,!
или:
. См. docs.python.org/3/library/re.html#index-9