2011-05-13 82 views
0

我有一個問題需要構建好的正則表達式來查找和替換。我需要替換許多.jsf文件中的所有網址。我想替換XXX<c:url value="URL_WITHOUT_XXX"/>凝視的潰瘍。下面的例子。正則表達式:用c:url標記查找並替換url

我堅持找正則表達式"XXX(.*)"和替換表達"<c:url value="\1"/>",但我發現表達式匹配的長字符串,例如"XXX/a" style="",但需要那場比賽只有第一"(HREF結束)。有人幫忙嗎?

我:

<a href="XXX/a" style=""> 
<a href="XXX/b" > 
<a href="XXX/c" ...> 

我想:

<a href="<c:url value="/a"/>" style=""> 
<a href="<c:url value="/b"/>" > 
<a href="<c:url value="/c"/>" ...> 

PS:對不起,我的英文不好;)

編輯: 我用查找/在Eclipse中替換(正則表達式)

回答

3

您應該指定您正在使用的語言。

下面的正則表達式將匹配你想要什麼:

<a href="XXX[^\"]*" 

如果你希望有一些特別的價值,您可以將根據您的需求正則表達式。例如:

<a href="(XXX[^\"]*)" 

會給你在第一組:如果你想有隻/a/b/c

XXX/a 
XXX/b 
XXX/b 

,您可以將它像:

<a href="XXX([^\"]*)" 

編輯:
我會解釋一下<a href="XXX[^\"]*"作用:

  • 它將匹配:<a href="XXX
  • 那麼就應該匹配任何,除了一個"零次或多次:[^\"]*
  • 最後匹配",這是不是真的有必要

當你這樣做:[^abc]你告訴它匹配任何東西,但不是a,或bc。 所以[^\"]是:匹配除了"以外的任何內容。

而且*意味着零次或更多次的量詞,所以a*將匹配一個空字符串,或aaaaaa,...

而最後一件事:

如果你想保持從整場比賽的價值APPART,所以你可以用它做任何事情,你可以使用組:(something)

+0

這是偉大的作品,但不理解的邏輯? '[^]'表示否定,但之後它會選擇'XXX/a'怎麼樣?有沒有辦法選擇像使用'^'和'$'之間的href標籤? – diEcho 2011-05-13 07:20:53

+0

@Oscar我試着用這個http://rubular.com/r/TxmEZEXQU3,請告訴我我在哪裏錯了? – diEcho 2011-05-13 07:23:19

+0

@diEcho我會修改我的答案,以便你能理解這個想法是什麼。 – 2011-05-13 07:34:29