正则表达式:提取字符串<name_id>?</name_id>中的值

时间:2014-12-22 17:13:52

标签: java regex

如果我想从下面的字符串中提取值,那么正确的正则表达式(我可以在Java中使用)会是什么?

<Name_id = bob>

我知道\<(.*?)\>将提取尖括号之间的所有内容,但我只需要提取“bob”。

将改变的字符串中唯一的部分是“bob”。我还想确保如果有人输入=bob作为Name_id,那么拔出的字符串就是那个并且不会弄乱正则表达式。

1 个答案:

答案 0 :(得分:1)

使用捕获组捕获所需的字符。

"<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