>есть строка вида
><h1>blalbla</h1>
>
>как из нее выдрать текст, заключенный между тегами?
>в данном случае blabla.
>
>делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/
>
>но не работает.
Зачем $ в начале регекспа? Это символ конца строки. Это раз.
[~<] - Очевидно подразумавалось все символы кроме <.
Тогда это должно выглядеть так [^<] - множество полученное отрицанием. Но вдруг в тексте появится символ < несущий смысловую нагрузку? это два.
Если вы хотите использовать альтернативу - ее нужно заключать в круглые скобки
(h|H), но в данном случае это нерационально, поскольку есть ключ i дающий регистронезависимость. это три.
Что бы "выдрать текст" его тоже нужно заключать в круглые скобки. это четыре.
Итак мы получаем.
/^<h1>(.+)/<\/h1>/i;
Если текст нужно достать с начала строки.
Значение в круглых скобках будет находится в переменной $1
Но можно его забрать из регекспа в одну строку.
$string='<h1>blalbla</h1>';
($text)=$string~=/^<h1>(.+)/<\/h1>/i;