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