我在Java中提取文本行,然后识别文本中的某些值。我需要创建两个getter来获取它们(如例1和2所示)。
如何在字符间提取字符串?
第一个例子
<element>
要么 <element text="">
期望的结果是单词元素。
第二个例子
<element>VALUE</element>
期望的结果是单词VALUE。我猜最好的方法是模式匹配?
发布于 2018-12-17 15:22:53
我建议使用像JSoup这样的xml / html解析器,但你的情况看起来有点不同。
就像你说的那样,根据你的例子1,你想要解析这个文本<element>
或者<element text="">
想要得到element
输出,对于你的例子2,<element>VALUE</element>
你想得到VALUE
结果,你可以使用正则表达式并编写这样的代码,
List<String> data = Arrays.asList("<element>", "<element text=\"\">", "<element>VALUE</element>");
Pattern p1 = Pattern.compile("<(\\w+)\\s*[^>]*?>");
Pattern p2 = Pattern.compile("^<(\\w+)\\s*.*?>(.+?)</\\1>$");
data.forEach(x -> {
Matcher m1 = p1.matcher(x);
if (m1.matches()) {
System.out.println(x + " --> " + m1.group(1));
} else {
Matcher m2 = p2.matcher(x);
if (m2.matches()) {
System.out.println(x + " --> " + m2.group(2));
}
}
});
它会输出:
<element> --> element
<element text=""> --> element
<element>VALUE</element> --> VALUE
https://stackoverflow.com/questions/-100006305
复制相似问题