【发布时间】:2020-08-21 15:39:59
【问题描述】:
我想选择{} 中的所有文本,但前提是其中没有\status…{}。
应匹配的示例:
\subsection{Hello} -> "\subsection”, "Hello"
\section{Foobar} -> "\section", "Foobar"
\subsubsection{This is a Triumph} -> "\subsubsection", "This is a Triumph"
应该不匹配的示例:
\subsection{Hello\statusdone{}}
\section{Hello World\statuswip{}}
\section{Everything\statusproofreading{}}
我认为负前瞻非常适合:
(\\.*section)\{(.*)(?!\\status.*)\}
但它们匹配:
\subsection{Hello\statusdone{}} -> "\subsection", "Hello\statusdone{}"
\section{Hello World\statuswip{}} -> "\section", "Hello World\statuswip{}"
\section{Everything\statusproofreading{}} -> "\section", "Everything\statusproofreading{}"
我怀疑这是因为.* 在否定前瞻之前。如果我在以下正则表达式中将其替换为例如Hello:
(\\.*section)\{(Hello)(?!\\status.*)\}
它正确地不匹配第一个负例\subsection{Hello\statusdone{}}。
我该如何解决这个问题?
【问题讨论】: