Visual Studio 2003の正規表現の置換に関する問題
-
22-07-2019 - |
質問
一部のLaTeXドキュメントを再構築されたテキストに変換し、Visual Studio 2003の正規表現に問題があります。次のfind /を使用して\ emph {text}を* text *に変換しようとしています。文字列を置換:
\\emph\{([^\}]*)\}
*\0*
ただし、このペアを使用すると、\ emph {text}が* \ emph {text} *に変換されますが、これは予期したものではありませんでした。 * \ 0 *ではなく* \ 1 *を使用すると、置換結果として**が返されます。
グループ化ルールについて何が欠けているのか、または理解できないのか
ありがとう。
解決
VS正規表現置換構文では、\ 0は一致した文字列全体であり、\ 1は最初にキャプチャされた変数の内容です(\ 2は2番目など)。したがって:
\ 0
ただし、このペアを使用すると \ emph {text}は* \ emph {text} *に変換されます それは私が期待したものではありませんでした。
このように、\ 0は一致した文字列全体です。
* \ 0 *ではなく* \ 1 *を使用すると、置換結果として**が返されます。
おそらく、キャプチャクラスに一致するものはありません。
詳細を追加するには、キャプチャクラスを定義するための構文(ドキュメント)は、ここで使用している括弧()ではなく、中括弧{}を使用しています。おそらく、これは「検索」として機能します。式:
\\emph\{{[^\}]*}\}
所属していません StackOverflow