Поиск и замена многострочного регулярного выражения в редакторе Ace

Есть ли какая-либо вспомогательная документация по многострочному поиску регулярных выражений и замене поддержки редактора ace.

Регулярное выражение для многострочного поиска

\\begin{.+?}(.*\n.*)*?\\end{(.+?)}

И содержимое латексного документа, по которому я хочу выполнить поиск, следующее:

\documentclass{article}
\usepackage[utf8]{inputenc}

\title{fsdfds}
\author{yadu.rvt }
\date{July 2019}

\usepackage{natbib}
\usepackage{graphicx}

\begin{document}

\maketitle

\section{Introduction}
There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable.
There is another theory which states that this has already happened.

\begin{figure}[h!]
\centering
\includegraphics[scale=1.7]{universe}
\caption{The Universe}
\label{fig:universe}
\end{figure}

\section{Conclusion}
``I always thought something was fundamentally wrong with the universe'' \citep{adams1995hitchhiker}

\bibliographystyle{plain}
\bibliography{references}
\end{document}

\ n не работает с поиском по регулярным выражениям в редакторе ace. Мне нужно включить многострочный поиск регулярных выражений в редакторе ace. Любая помощь, пожалуйста. Это проверено и работает в https://regex101.com/


person Yadu Chandran    schedule 29.07.2019    source источник
comment
Можете ли вы сделать этот вопрос законченным, показав нам свой шаблон регулярного выражения, а также текст, по которому вы хотите выполнить поиск?   -  person Tim Biegeleisen    schedule 29.07.2019
comment
Если вам нужна точка для соответствия между символами новой строки, но ваш редактор на самом деле не поддерживает режим точка все, попробуйте использовать [\s\S]*. Это должно совпадать с символами новой строки.   -  person Tim Biegeleisen    schedule 29.07.2019
comment
Я отредактировал вопрос. Пожалуйста, проверьте сейчас.   -  person Yadu Chandran    schedule 29.07.2019


Ответы (1)


Вот общий шаблон регулярного выражения, который должен работать, даже если ваш редактор не поддерживает режим dot all:

\\begin\{([^}]+)\}[\s\S]*?\\end\{\1\}

Идея здесь состоит в том, чтобы сопоставить \begin маркер, а также сопоставить и зафиксировать тип маркера (например, document или figure). Затем мы сопоставляем символы новой строки, пока не дойдем до первого закрывающего маркера \end.

Демо

Если бы мы хотели сделать шаблон более конкретным и, например, соответствовать только одному разделу figure, мы могли бы попробовать:

\\begin\{figure\}[\s\S]*?\\end\{figure\}

Демо

person Tim Biegeleisen    schedule 29.07.2019
comment
К сожалению, этот код не работает с редактором ace. пожалуйста, обратитесь по этой ссылке. stackoverflow.com/questions/35289002/ace-editor-multiline-regex < / а> - person Yadu Chandran; 29.07.2019