Как удалить все css классы, кроме одного? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть строка:

html = 'class="repository-content frozen interface">'

CSS правила repository-content могут быть расположены где угодно:

html = 'class="frozen repository-content interface">'

Помогите мне создать регулярное выражение для удаления всех классов, кроме repository-content

моя версия:

html.gsub(/[^\s?forbidden-word\s?]/, '')

Но это не работает

1 Ответ

0 голосов
/ 02 апреля 2020

Я думаю, что лучше подумать об этом наоборот (в основном белый список вместо черного списка). Если вы знаете слово, которое хотите сохранить, вы можете сделать это:

irb(main):001:0> html = 'class="frozen repository-content-2 repository-content interface">'
=> "class=\"frozen repository-content-2 repository-content interface\">"

irb(main):002:0> html.gsub(/class=".*?(repository-content(?=[\s"])).*?"/, 'class="\1"')
=> "class=\"repository-content\">"
irb(main):003:0>

Поэтому идея состоит в том, чтобы сохранить слово, которое вы хотите, и удалить окружающие (запрещенные) слова.

.*?  this is to match 0 or more characters (non-greedy)

\1   is to keep the word you want inside the class="..."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...