Это работает? Я только сделал несколько проверок, но похоже:
Regex expr = new Regex(@"<([A-OQ-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>", RegexOptions.IgnoreCase);
Я только что скопировал и вставил код C #. Чтобы получить все между тегами, вам нужно использовать \ 1, а затем вам нужно отключить чувствительность к регистру, чтобы IgnoreCase, или -i, или любой другой инструмент, который вы используете, предоставлял эту опцию. Если ваш инструмент этого не делает, вам придется выполнить A-Oa-oq-zQ-z и т. Д. Просто регулярное выражение:
<([A-OQ-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>
Обратите внимание, что здесь будут отмечаться совпадения с отдельными тегами, но вам следует начать.