如果我想从下面的字符串中提取值,那么正确的正则表达式(我可以在Java中使用)会是什么?
<Name_id = bob>
我知道\<(.*?)\>
将提取尖括号之间的所有内容,但我只需要提取“bob”。
将改变的字符串中唯一的部分是“bob”。我还想确保如果有人输入=bob
作为Name_id,那么拔出的字符串就是那个并且不会弄乱正则表达式。
答案 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