如何在java中使用Pattern matcher?

hao*_*hao 2 java regex

让我们说字符串是<title>xyz</title> 我想从字符串中提取xyz出来的.我用了:

Pattern titlePattern = Pattern.compile("&lttitle&gt\\s*(.+?)\\s*&lt/title&gt");
Matcher titleMatcher = titlePattern.matcher(line);
String title=titleMatcher.group(1));    
Run Code Online (Sandbox Code Playgroud)

但是我收到了titlePattern.matcher(line)的错误;

Fab*_*eeg 6

你说你的错误发生得更早(实际错误是什么,运行没有错误),但解决之后你需要调用find()匹配器一次来实际搜索模式:

if(titleMatcher.find()){
  String title = titleMatcher.group(1);
}
Run Code Online (Sandbox Code Playgroud)

如果你真的匹配一个非转义HTML实体的字符串,那就不是这样了

<title>xyz</title>
Run Code Online (Sandbox Code Playgroud)

那么你的正则表达式将不得不使用这些,而不是转义的实体:

"<title>\\s*(.+?)\\s*</title>"
Run Code Online (Sandbox Code Playgroud)

此外,您应该小心尝试使用它的程度,因为您无法使用正则表达式真正解析HTML或XML.如果您正在使用XML,则使用XML解析器(例如JDOM)要容易得多.