2013-11-15 50 views
-1

正則表達式:(^.*?)\s+(.*)正則表達式 - 爲什麼組1具​​有所有字符?

搜索文本:Director ANURADHA GUPTA

替換:$1 - $2

我期待:Director - ANURADHA GUPTA

而是我得到:Director ANURADHA GUPTA - Director

我想駁頭字轉換成第一組,然後第二個字轉入另一組。

更新:

對不起,讓人困惑的傢伙。我正在使用java reg ex :.這裏有一個Groovy腳本,解釋我正在嘗試做什麼

import java.util.regex.Pattern  

def pattern = Pattern.compile("(^.*?)\\s(.*)"); 
def matcher = pattern.matcher("Director ANURADHA GUPTA"); 
if(matcher.matches()){ 
    println matcher.group(1); 
    println matcher.group(2); 

} 

Output 
Director 
ANURADHA GUPTA 

This Works!我試圖測試對REG前測試鉻插件:

https://chrome.google.com/webstore/detail/regexp-tester-app/cmmblmkfaijaadfjapjddbeaoffeccib?hl=en

假設,如果它的工作原理有它應該在java中正常工作。它在那個插件上沒有用。

+1

您使用的是哪種正則表達式引擎?另外,$ 3'輸出什麼,任何機會? –

+3

我測試了[這裏](http://regex101.com/r/dA3aX4),一切工作正常。 –

+0

你可能需要用'$ 2 - $ 3'替換。 $ 1可能總是存儲整個比賽。 – OGHaza

回答

1

更高效的將被替換\s+" - "

查看演示here

+0

我不認爲它會捕獲任何東西,因爲提到的字符串輸入是:'Director ANURADHA GUPTA'? – Tafari

+0

他的輸入字符串中沒有'' - '' – OGHaza

+0

@Tafari - 你錯了。你在我的答案中檢查演示鏈接? –

-1

另一種方式,以確保您只用一個字分裂在第一組中是這樣的:

^(\w+)替換$1 -

原來的問題一定是,你有圍繞整個正則表達式,括號這成爲第一個捕獲組。

+0

downvote的任何解釋? –

相關問題