2015-11-25 1 views
1

Я пытаюсь написать регулярное выражение, чтобы выбрать теги <button>, которые делают и не имеют тегов Google Analytics на них.Regex - найти HTML-теги, которые не имеют определенного атрибута

<button.*analytics.*<\/button> решает первую проблему.

У меня проблемы с обратной ситуацией, хотя я пытаюсь найти кнопки, которые не имеют аналитики.

У меня есть строка как: <button class="some-class">Button Text</button> (не содержит analytics-* атрибутов), и мне нужно это передать при поиске с регулярным выражением.

До сих пор я пытался <button(!?analytics).*<\/button>, но это не похоже на работу ...

Есть идеи?

+0

Содержит строку, в соответствии с которой более ясно, что вы пытаетесь сделать. –

ответ

4

Вы можете попробовать:

<button *((?!analytics).)*<\/button> 

О том, что регулярное выражение не поддерживает обратное сопоставление не совсем верно . Вы можете имитировать это поведение, используя отрицательный просмотровых обходные Source

следующего кода отрицательных просмотровых обходный:

((?!analytics).)* 

Это будет соответствовать все, что не countain аналитики. Тогда вы просто должны создать свой регулярное выражение, добавив, что вы должны найти до и после этого ключевого слова в соответствии с Вашим делом: Перед вашим ключевым словом:

<button * 

После вашего ключевого слова:

<\/button> 

Test

1

Я бы использовал тот факт, что в теге между именем тега и его атрибутами существует какое-то пространство.

Итак:

  • теги без атрибутов

    <[^[:space:]][[:space:]]*/?>

  • теги с атрибутами

    <[^[:space:]][[:space:]]+[^[:space:]].*/?>

Я не знаю, на каком языке вы нацелились, я использовал расширенное регулярное выражение POSIX.

EDIT: Я остался здесь очень общим. Вы можете быть более конкретным, если хотите только совместить кнопки.

Смежные вопросы