У меня довольно простая проблема с регулярным выражением для небольшого личного эксперимента, который я не совсем понял.
В строке у меня может быть несколько <tag>[some characters here]
, которым мне нужно соответствовать.Очевидный способ сделать это - использовать регулярное выражение /<tag>\[.*?\]/
, чтобы сопоставить любые символы после <tag>[
и до ]
.
. Я бы хотел иметь <tag>
s.в течение <tag>
с, однако.Это вызывает проблему.Если бы у меня было следующее:
<tag>[some characters <tag>[in here] to match]
, регулярное выражение прекратило бы сопоставление, как только оно достигло первой закрывающей скобки, и полностью не совпало с последней частью инструкции.Я попытался решить эту проблему, сказав регулярному выражению игнорировать любые внутренние <tag>
s, чтобы позже я мог сопоставить удаленное содержимое.Я не совсем понял, как это работает.Самое близкое, что я получил, это:
/<tag>\[(.*?(?:<tag>\[.*?\])*?.*?)\]/
, который не совсем работает.Я надеюсь, что он будет соответствовать любому количеству символов и любым внутренним тегам, если они существуют.Однако у него все еще есть проблемы с этой первой закрывающей скобкой.
Может быть, кто-то, кто лучше разбирается в регулярных выражениях, знает хорошее решение для этого.