数据:<emp_dist_nm>Shyam lal/tester</emp_dist_nm>
我尝试过的代码是
Pattern p3 = Pattern.compile("<emp_dist_nm>(\\S+)</emp_dist_nm>");
该模式无法编译,请提示我需要使用的确切符号,以便我的模式可以编译
答案 0 :(得分:3)
模式可以编译,只是与字符串不匹配。您正在寻找\S+
,但与名称中的空格不匹配。相反,您可以例如尝试“ <
以外的所有内容”,即[^<]+
Pattern p3 = Pattern.compile("<emp_dist_nm>([^<]+)</emp_dist_nm>");
实际上,由于您已经在要捕获的组之后添加了结束标签,因此您也可以只使用.+?
,即,一个非贪心的 any 字符组。这里,非贪婪的?
很重要,否则它将合并两个这样的标记的内容以及它们之间的所有内容。
Pattern p3 = Pattern.compile("<emp_dist_nm>(.+?)</emp_dist_nm>");
如果您还希望允许使用空标签,请使用*
而不是+
,即[^<]*
或.*?
。