Это то, что я бы использовал.
<code>(?<=(<pre>))(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|`~]| )+?(?=(
))
В основном это то, что он делает:
(?<=(<pre>))
Выбор должен начинаться с <pre>
тега
(\w|\d|\n|[().,\-:;@#$%^&*\[\]"'+–/\/®°⁰!?{}|~]| )
Это просто регулярное выражение, которое я хочу применить. В этом случае он выбирает букву, цифру, символ новой строки или некоторые специальные символы, перечисленные в примере в квадратных скобках. Символ канала |
просто означает « ИЛИ ».
+?
Плюс символы состояния для выбора одного или нескольких из вышеперечисленных - порядок не имеет значения. Вопросительный знак изменяет поведение по умолчанию с «жадный» на «неряшливый».
(?=(</pre>))
Выбор должен быть добавлен тегом </pre>
В зависимости от вашего варианта использования может потребоваться добавить некоторые модификаторы, такие как ( i или m )
- i - без учета регистра
- m - многострочный поиск
Здесь я выполнил этот поиск в Sublime Text, поэтому мне не пришлось использовать модификаторы в моем регулярном выражении.
Javascript не поддерживает lookbehind
Приведенный выше пример должен хорошо работать с такими языками, как PHP, Perl, Java ...
Javascript, однако, не поддерживает lookbehind, поэтому мы должны забыть об использовании (?<=(<pre>))
и искать какой-то обходной путь. Возможно, просто уберите первые четыре символа из нашего результата для каждого выбора, как здесь
Регулярное совпадение текста между тегами
Также посмотрите на JAVASCRIPT REGEX ДОКУМЕНТАЦИЮ для не захватывающих скобок