繁体   English   中英

下面的模式将使用什么符号来编译

[英]What symbol is to be used for the below pattern to compile

数据: <emp_dist_nm>Shyam lal/tester</emp_dist_nm>

我试过的代码是

Pattern p3 = Pattern.compile("<emp_dist_nm>(\\S+)</emp_dist_nm>");

模式没有得到编译,请建议我需要使用的确切符号,以便我的模式可以编译

该模式确实可以编译,只是与字符串不匹配。 您正在寻找\\S+ ,但这与名称中的空格不匹配。 相反,您可以,例如,尝试“除<之外的所有内容”,即[^<]+

Pattern p3 = Pattern.compile("<emp_dist_nm>([^<]+)</emp_dist_nm>");

事实上,由于您在要捕获的组之后已经有了结束标记,您也可以只使用.+? ,即任何字符的非贪婪组。 在这里,非贪婪? 很重要,否则它可能会合并两个此类标签的内容以及介于两者之间的所有内容。

Pattern p3 = Pattern.compile("<emp_dist_nm>(.+?)</emp_dist_nm>");

如果您还想允许空标签,请使用*而不是+ ,即[^<]*.*? .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM