为了账号安全,请及时绑定邮箱和手机立即绑定

文本未正确拆分

文本未正确拆分

神不在的星期二 2023-06-08 20:04:16
我正在尝试从字符串中提取文本和十六进制颜色。目前符号“>”有一个小问题这是我目前得到的代码;package main.cache;import java.util.Arrays;import java.util.regex.Pattern;public class Main {    public static void extract(String string) {         final String STARTS_WITH_COLOR_LITERAL = "^[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}";        final Pattern pattern = Pattern.compile(STARTS_WITH_COLOR_LITERAL);        Object[] objects = Arrays.stream(string.split("<col=")).filter(part -> pattern.matcher(part).find()).toArray();        String name;        String color = null;        for (int i = 0; i < objects.length; i++) {            String[] line = objects[i].toString().split(">");            if (line.length == 1) {                name = line[0];            } else {                color = line[0];                name = line[1];            }            System.out.println("Color " + color + ", name " + name);        }    }    public static void main(String[] args) {        extract("something before<col=ff00ff>mercides> car<col=ffff00>plates");    }}例如传递这个参数时,输出应该是Color null, name something beforeColor ff00ff, name mercides> carColor ffff00, name plates我目前得到的输出是Color null, name something beforeColor ff00ff, name mercidesColor ffff00, name plates
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您正在寻找对color/name(按此顺序),您可以使用:(?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?(?<text>(?><.*?>)?[^<]+)


static void extract(String string) {

    Pattern pattern =

            Pattern.compile("(?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?(?<name>(?><.*?>)?[^<]+)");

    Matcher m = pattern.matcher(string);

    while (m.find()) {

        String color = m.group("color");

        String name = m.group("name");

        System.out.printf("Color %s, name %s\n", color, name);

    }

}

/*

Color null, name something before

Color ff00ff, name mercides> car

Color ffff00, name plates

  1. (?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?是颜色,以六字符开始<col和结束,它是可选的,所以最后有一个>?

  2. (?<text>(?><.*?>)?[^<]+)名称组,可以有另一个应答器,但最后一个字符可以是<


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信