2014-12-22 29 views
0

如果我想從下面的字符串中提取一個值,那麼正確的正則表達式(我可以在Java中使用)是什麼?正則表達式:提取字符串中的值<Name_id = bob>?

<Name_id = bob> 

我知道\<(.*?)\>將尖括號之間抽取的一切,但我只需要提取「鮑勃」。

將改變的字符串的唯一部分將是「鮑勃」。我還想確保如果有人輸入=bob作爲Name_id,那麼所提取的字符串就是這樣,並且不會混淆正則表達式。

回答

2

使用捕獲組來捕獲所需的字符。

"<Name_id\\s+=\\s+([^>]+)>" 

OR

"<Name_id\\s+=\\s+([\w]+)>" 

,然後打印組索引1在最後。 \s+匹配一個或多個空格字符,\w+匹配一個或多個單詞字符。

String i = "<Name_id = bob>"; 
Matcher m = Pattern.compile("<Name_id\\s+=\\s+([^>]+)>").matcher(i); 
while(m.find()) 
{ 
    System.out.println(m.group(1)); 
} 

輸出:

bob