我有一个字符串<Thread> 'data we need' </Thread>
,我想提取'data we need'
。
我一直在使用它,但是没有任何结果:
Pattern patternThread = Pattern.compile("<Thread(.*?)/Thread>");
Matcher matcherThread = patternThread.matcher(a);
if (matcherThread.find()) {
System.out.println("Thread Oke");
System.out.println(matcherThread.group(1));
}
我知道问题是
"<" and the "/"
。那么,有什么建议吗?
我已经尝试过“ //”和“ /”
我的jdk老了吗?在7.2
我已经在oracle上搜索了解决方案,但仍然无法解决此问题
最佳答案
您可以使用此正则表达式代替<Thread>(.*?)</Thread>
:
Pattern patternThread = Pattern.compile("<Thread>(.*?)</Thread>");
Matcher matcherThread = patternThread.matcher("<Thread> 'data we need' </Thread>");
while (matcherThread.find()) {
System.out.println(matcherThread.group(1));
}
输出量
'data we need'
如果可以得到多个结果,可以使用
while
您必须使用
matcherThread.group(1)
而不是matcherThread.group()
,因为最后一次返回<Thread> 'data we need' </Thread>
您可以找到一个演示here,并可以找到一个代码示例here