2009-06-25 66 views
1

我正在將一些LaTeX文檔轉換爲重構文本,並且在Visual Studio 2003中遇到了一些正則表達式問題。我試圖將\ emph {text}以*文本使用以下查找* /替換字符串:但是在Visual Studio 2003中正則表達式替換的問題

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

*\0* 

,使用這對我拿到\ {EMPH文字}其轉化爲不是我所期待* \ {EMPH文字} *。當我使用* \ 1 *而不是* \ 0 *時,我得到**作爲替換結果。

我錯過了什麼,或者我對分組規則有什麼不瞭解?

謝謝。

+0

你可以發佈示例文本行只是爲了確保? – 2009-06-25 03:43:05

+0

我不確定你的意思。 – 2009-06-25 03:46:12

回答

3

我認爲,在VS正則表達式替換語法中,\ 0是整個匹配的字符串,而\ 1是第一個捕獲變量(\ 2是第二個等等)的內容。因此:

\ 0

但是,使用這對我得到 \ {EMPH}文本轉換爲* \ {EMPH文字} * 這是不是我的預期。

因此確認,\ 0是整個匹配的字符串。

當我使用* \ 1 *代替* \ 0 *時,我得到**作爲替換結果。

也許你在捕獲類中沒有匹配任何東西。

要添加更多詳細信息,定義的捕獲類(在the docs中稱爲帶標記的表達式)的語法使用大括號{},而不是您在此處使用的括號()。也許這將作爲「發現」的表達式:

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