Я пытаюсь сопоставить дефис, если ему предшествуют или следуют пробелы или оба, но не отдельный дефис.Хотя несколько каналов решат эту проблему (похоже на вопрос, который уже задавался, но не тот же), я хотел знать, существует ли прямое решение.
Например.Я хочу сопоставить (предположим, .
- это пробел для форматирования) .-.
или .-
или -.
, но не просто -
.
текущее выражение:
/ *- */g
соответствует всем этим.
Есть ли способ иметь 1 или более, но для совокупности, как минимум в одном пробеле до или после дефиса?
Редактировать: больше контекста
Яобработка нескольких выражений:
aln = re.compile(r'[^ \-a-zA-Z0-9]+') # matches non space or - or alphanumeric characters
spc = re.compile(' +') # matches one or more spaces
url_data = song + '-' + artist
url_data = re.sub(aln, '', url_data) # remove punctuation and other characters
url_data = re.sub(spc, '-', url_data) # substitute one or more spaces to -
Например.если песня ABC, XYZ
, а исполнитель PQR
, то, наконец, я получаю PQR-ABC-XYZ
.
Однако, если песня имеет форму , ABC ,
и исполнителя PQR
, тогда я получаю PQR--ABC-
, пока яwant PQR-ABC
.
Если я обновлю spc до *- *| +
, то в обычных случаях (первый пример) он будет избыточно соответствовать дефису и заменяет его только дефисом, который я пытаюсь улучшить.