我希望在java中使用正则表达式和TKK_
来获取以matcher
开头的子字符串。该字符串实际上是一个URL,例如
http://somewhere.com/core?item=TKK_43123
到目前为止,我是基于此example
写的String pattern = "TKK_.+?";
Pattern r = Pattern.compile(pattern );
Matcher m = r.matcher(url);
但是打印m.group(1)
说No match found
。我想得到TKK_43123
答案 0 :(得分:2)
您可以使用
String pattern = "TKK_\\d+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher("http://somewhere.com/core?item=TKK_43123");
if (m.find()){
System.out.println(m.group(0));
}
// => TKK_43123
请参阅Java demo
\d+
将匹配TKK_
之后的1位或更多位数。
请注意,在字符串末尾使用延迟量化的模式几乎不会是您想要的,因为它匹配 minimal 个字符数以返回有效匹配。因此,模式末尾的.+?
始终只匹配1个字符。模式末尾的.*?
将匹配一个空字符串。
当然要记得使用.find()
或.matches()
实际运行 匹配器,否则,您将无法访问任何群组,因为尚未找到匹配。