java - 如何在java中使用模式匹配器?

标签 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));    

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

最佳答案

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

if(titleMatcher.find()){
  String title = titleMatcher.group(1);
}

如果您确实与具有非转义 HTML 实体(如

)的字符串进行匹配,则情况并非如此
<title>xyz</title>

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

"<title>\\s*(.+?)\\s*</title>"

另外,你应该小心你尝试做到什么程度,就像你 can't really parse HTML or XML with regular expressions 一样。 。如果您正在使用 XML,那么使用 XML 解析器会更容易,例如JDOM .

关于java - 如何在java中使用模式匹配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1986031/

相关文章:

java - 在哪里存储 keystore 密码?

java - 终止执行程序服务和极快的 Java 代码?

python - 从字符串中提取小时_格式不明确

javascript - 为什么积极的前瞻性不能作为第一个捕获组?

java - JFace:Setgrayed 在树查看器中不起作用

java - 使用 sort 方法对人员数组进行排序

java - 当我们在集合中使用 for-each 构造进行迭代时,元素的顺序是什么?

regex - vim:将包含模式的行移动到上一行的末尾

c - Delphi PerlRegEx : Link . 静态 obj 文件,因此它们不依赖于 msvcrt.dll

Python 正则表达式 : Add "-" inside a string using re. 子