Как написать регулярное выражение для удаления шорткодов с различными формулировками - PullRequest
0 голосов
/ 30 июня 2019

У меня есть шорткоды, которые я хотел бы удалить, размещенные в сотнях постов WordPress, которые выглядят следующим образом:

[ratingTable id="26" theme="3" rank="1" desc="Play This Top Rated Site For Free!"]

Однако у каждого из них есть текст, который отличается от начального [ratingTable id = ”26" часть.Как я мог создать регулярное выражение, которое идентифицировало бы все это из этого первого бита текста и выделило весь шорткод?Спасибо!

1 Ответ

0 голосов
/ 30 июня 2019

Вы можете сделать это с помощью регулярных выражений

Найти:

\[ratingTable(?=\s)(?=(?:[^\]"']|"[^"]*"|'[^']*')*?\sid\s*=\s*(?:(['"])\s*26\s*\1))\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^\]]*?)+\]

Заменить: ничего

https://regex101.com/r/4B9RtX/1

 \[ ratingTable                # Begin tag
 (?= \s )
 (?=                           # Asserttion (a pseudo atomic group)
      (?: [^\]"'] | " [^"]* " | ' [^']* ' )*?
      \s id \s* = \s*               # id = 
      (?:
           ( ['"] )                      # (1), Quote
           \s* 26 \s*                    # 26
           \1 
      )
 )
                               # Have the id, just match the rest of tag
 \s+ 
 (?: " [\S\s]*? " | ' [\S\s]*? ' | [^\]]*? )+

 \]                            # End tag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...