1

私はいくつかの LaTeX ドキュメントを再構成されたテキストに変換している最中であり、Visual Studio 2003 での正規表現に問題があります。次の検索/置換文字列を使用して \emph{text} を *text* に変換しようとしています:

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

*\0*

しかし、このペアを使用すると \emph{text} が *\emph{text}* に変換されますが、これは私が期待したものではありませんでした。*\0* の代わりに *\1* を使用すると、置換結果として ** が得られます。

グループ化ルールについて何が欠けているか、または理解できないのですか?

ありがとう。

4

1 に答える 1

3

VS 正規表現置換構文では、\0 は一致した文字列全体であり、\1 は最初にキャプチャされた変数の内容です (\2 は 2 番目など)。したがって:

\0

しかし、このペアを使用すると \emph{text} が *\emph{text}* に変換されますが、これは私が期待したものではありませんでした。

このように確認すると、\0 は一致した文字列全体です。

*\0* の代わりに *\1* を使用すると、置換結果として ** が得られます。

おそらく、キャプチャ クラスで何も一致していません。

詳細を追加するために、キャプチャ クラスを定義するための構文 (ドキュメントではタグ付き式と呼ばれます) では、ここで使用している括弧 () ではなく、中括弧 {} を使用します。おそらく、これは「検索」式として機能します。

\\emph\{{[^\}]*}\} 
于 2009-06-25T03:53:43.647 に答える