2016-05-15 6 views
0

я попытаюсь объяснить мою ситуацию с примера рассмотрим следующую строку:Regex для согласования некоторых символов, которые должны быть оставлены позже

03 - The-Basics-of-Querying-the-Dom.mov

Мне нужно удалить все - с (дефис), за исключением один после цифр. Другими словами, все дефис между словами.

Это REGEX Я создал: /([^\s])\-/. Но проблема в том, что при попытке заменить символ перед пространством также удаляется.

После результат я стремлюсь:

03 - The Basics of Querying the Dom.mov

Думай, я могу использовать что-то вроде исключающие группы? Я попытался использовать ?: & ?! в группе захвата, чтобы избежать его совпадения, но не дал никаких положительных результатов.

+0

'/ (? <= [az]) - (? = [az])/gi' https://regex101.com/r/pZ6tE2/1 –

+1

'(?

+0

Почему бы не использовать [границы слов] (https: // regex101. com/r/xB3pO8/2) –

ответ

0

Я только изменил уже предложенной вами RegEx с помощью позитивного просмотра назад (который только утверждает правильное положение):

/(?<=[^\s])\-/