1

正規表現検索を使用して、次の文字列を置き換えます。

\new{}\new{\textbf{test1}}\new{test2}

\textbf{test1}test2

regex replace を \new{(.*)} に使用して検索し、\1 を使用して置換しました。

ただし、検索は常に元の文字列の行全体と一致し、置換結果は次のとおりです。

}\new{\textbf{test1}}\new{test2

私が必要とするものからはほど遠い。

Java の正規表現では、? 量指定子が消極的な量指定子になった後。次に、最小の一致を見つけようとします。したがって、Javaでは、私の検索正規表現は次のようになります

\\new\{(.*?)\}

最小の一致を行うには、TeXStudio で対応する正規表現検索文字列が必要です。とにかく、TexStudioが貪欲でない一致をサポートしていなくても、このケースを解決するにはどうすればよいですか?

4

2 に答える 2

2

編集:悲しいことに、このソリューションは のようなネストされたパターンと一致しません\new{\foo{text}}

私の知る限り、バランスの取れたパターンを正規表現と一致させるには再帰パターンが必要です.TeXStudioが遅延量指定子をサポートしていない場合、それらをサポートするとは思えません.

これは翻訳に関するものではありません。\\new\{(.*?)\}テストケースでは、これは を返し\textbf{test1test2ます。

必要なことを行うには、TeXStudio 正規表現以外のツールを見つける必要があると思います。


かなり制限されているように見えるので、TeXStudio でサポートされているかどうかはわかりませんが、テキストに含まれていない}場合は使用できます

\\new\{([^}]*)\}

[^}]「以外」の意味}。このように遅延量指定子は必要ありません。

それがうまくいかない場合は、別の角度から問題を取り上げて、\new{and}を空の文字列に置き換えることができると思います...入力によっては、残りのコードを壊したくない場合があります。

あなたの入力が本当にリスト a である場合、他の不要な を置き換えることを避けるために\new{}のバージョンを試してみてください。} *\new{}

于 2014-04-09T13:24:18.627 に答える