Регулярное выражение найти и выбрать

Я пытаюсь выделить все дефисы, чтобы заменить их пробелами. Я делаю так, чтобы обеспечить лучшую доступность в моей CMS. В настоящее время я использую атом найти и заменить с опцией Regex.

<img src="http://myurl.com/images/name-of-image.jpg" title="this-is-my-title" alt="here-is-a-description-of-this-image" />

С помощью регулярного выражения я хотел бы выбрать title и alt и заменить каждый дефис одним пробелом.

Поэтому я подумал начать с:

^(alt|title=\")[\-]*(\")$ //does not work 

и это может быть $1 но я не знаю, как выбрать только дефисы, соответствующие этому критерию. Для этого должно быть решение.

1 ответ

краткое

Ввиду того, что вы не указали язык, я просто предполагаю, что регулярное выражение означает любое работающее регулярное выражение, и что вы получите его после. Таким образом, этот ответ использует регулярное выражение PCRE.

Вместо этого вы должны получить все атрибуты по отдельности, а затем, если атрибут находится в вашем списке ["alt", "title"], вы должны просто сделать замену строки, чтобы изменить - в ,


Код

Смотрите регулярное выражение в использовании здесь

(?:\b(?:alt|title)="|\G(?!\A))[^"-]*\K-

Результаты

вход

<img src="http://myurl.com/images/name-of-image.jpg" title="this-is-my-title" alt="here-is-a-description-of-this-image" />

Выход

<img src="http://myurl.com/images/name-of-image.jpg" title="this is my title" alt="here is a description of this image" />

объяснение

  • (?:\b(?:alt|title)="|\G(?!\A)) Соответствует любому из следующих
    • \b(?:alt|title)=" Подходим следующее
      • \b Утвердить положение как границу слова
      • (?:alt|title) Совпадение либо alt или же title в прямом смысле
      • =" Подходим это буквально
    • \G(?!\A) Утвердить позицию в конце предыдущего матча
  • [^"-]*? Подберите любой символ, которого нет в наборе (кроме " а также -) любое количество раз
  • \K Сбрасывает начальную точку указанного совпадения. Все ранее использованные персонажи больше не включаются в финальный матч.
  • - Подберите символ дефиса - в прямом смысле
Другие вопросы по тегам