首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模式提取文本java

模式提取文本java
EN

Stack Overflow用户
提问于 2018-12-17 05:32:40
回答 1查看 0关注 0票数 0

我在Java中提取文本行,然后识别文本中的某些值。我需要创建两个getter来获取它们(如例1和2所示)。

如何在字符间提取字符串?

第一个例子

<element> 要么 <element text="">

期望的结果是单词元素。

第二个例子

<element>VALUE</element>

期望的结果是单词VALUE。我猜最好的方法是模式匹配?

EN

回答 1

Stack Overflow用户

发布于 2018-12-17 15:22:53

我建议使用像JSoup这样的xml / html解析器,但你的情况看起来有点不同。

就像你说的那样,根据你的例子1,你想要解析这个文本<element>或者<element text="">想要得到element输出,对于你的例子2,<element>VALUE</element>你想得到VALUE结果,你可以使用正则表达式并编写这样的代码,

代码语言:javascript
复制
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));
        }
    }
});

它会输出:

代码语言:javascript
复制
<element> --> element
<element text=""> --> element
<element>VALUE</element> --> VALUE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档