我有一个字符串<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

10-06 05:21