1. 程式人生 > >eclipse正則表示式批量查詢替換

eclipse正則表示式批量查詢替換

我們經常使用一些工具進行替換操作,有些工具在替換時支援使用正則表示式查詢,然後替換。通常有兩


種情況:
簡單替換
<li class="tab_cur" onclick="DynamicForm.tab(this,'web');" onmousedown="ClickMonkey.log


('haoweb');">網 頁</li>
<li class="tab_item" onclick="DynamicForm.tab(this,'video');" onmousedown="ClickMonkey.log


('haovideo');">視 頻</li>
<li class="tab_item" onclick="DynamicForm.tab(this,'image');" onmousedown="ClickMonkey.log


('haoimage');">圖 片</li>
<li class="tab_item" onclick="DynamicForm.tab(this,'tieba');" onmousedown="ClickMonkey.log


('haotieba');">貼 吧</li>


1:將<li>替換成<a>或<span>或<div>等,這個很簡單,直接查詢<li>的開始結束標籤替換即可,連正則表


達式不用就可操作
2:將符合 DynamicForm.tab(this,'.*');這個正則表示式的字串替換成其它固定的字串,這個用正則


表示式也可很簡單的操作
這兩種非常簡單,大家都會的,跟沒說一樣^-^。


複雜替換
這個才是本文重點,還是以上面的<li>片段為例,
將 <li class="tab_cur" onclick="DynamicForm.tab(this,'web');" onmousedown="ClickMonkey.log


('haoweb');">網 頁</li>
轉換為: <div id="tab_cur" onclick="click('haoweb')" onmousedown="down('web')">網 頁</div>,


其它均類似, 這種情況應該怎麼辦呢,當然最笨的辦法就是一個一個手工替換(希望看了本文後你再也不


要在這種情況進行體力勞動了 ^-^ ),現在我們可以利用正則表示式來替換。


工具1:Editplus,跟這個同級別的工具應用都可以,本人習慣就是使用這個,其它的沒用過,大家自己去


試一下好了
開啟替換視窗(Ctrl+H):
查詢:<li class="(.*)" onclick="DynamicForm.tab\(this,'(.*)'\);" 


onmousedown="ClickMonkey.log\('(.*)'\);">(.*)</li>
替換: <div id="\1" onclick="click('\3')" onmousedown="down('\2')">\4</div>
點選全部替換,結果如下:
<div id="tab_cur" onclick="click('haoweb')" onmousedown="down('web')">網 頁</div>
<div id="tab_item" onclick="click('haovideo')" onmousedown="down('video')">視 頻</div>
<div id="tab_item" onclick="click('haoimage')" onmousedown="down('image')">圖 片</div>
<div id="tab_item" onclick="click('haotieba')" onmousedown="down('tieba')">貼 吧</div>


工具2:Eclipse
查詢:<li class="(.*)" onclick="DynamicForm.tab\(this,'(.*)'\);" 


onmousedown="ClickMonkey.log\('(.*)'\);">(.*)</li>
替換: <div id="\1" onclick="click('\3')" onmousedown="down('\2')">\4</div>
    或 <div id="$1" onclick="click(' $ 3')" onmousedown="down(' $ 2')"> $ 4</div>


解釋:上面的正則表示式其實是分成了二部分,一部分是固定的字元,像<li class="這樣的,還有一部分


是(.*)這樣的真正的正則表示式,
使用 <li class="(.*)" onclick="DynamicForm.tab\(this,'(.*)'\);" onmousedown="ClickMonkey.log


\('(.*)'\);">(.*)</li> 匹配  <li class="tab_cur" onclick="DynamicForm.tab(this,'web');" 


onmousedown="ClickMonkey.log('haoweb');">網 頁</li> 


\0  表示查詢到的整個字串: <li class="tab_cur" onclick="DynamicForm.tab(this,'web');" 


onmousedown="ClickMonkey.log('haoweb');">網 頁</li>
\1  表示符合第1個正則表示式( 第1個(.*) )的內容: tab_cur
\2   表示 符合 第2個正則表示式 ( 第1個(.*) )的內容: web
\3   表示 符合 第3個正則表示式 ( 第1個(.*) )的內容: haoweb
\4   表示 符合 第4個正則表示式 ( 第1個(.*) )的內容: 網 頁
當能使用上面這樣的佔位符來代表對應的內容時,這個時候,我們就可以隨便組合我們需要替換成的內容


了:
<div id="\1" onclick="click('\3')" onmousedown="down('\2')">\4</div>