文本未正确拆分

我正在尝试从字符串中提取文本和十六进制颜色。


目前符号“>”有一个小问题


这是我目前得到的代码;


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 before

Color ff00ff, name mercides> car

Color ffff00, name plates

我目前得到的输出是


Color null, name something before

Color ff00ff, name mercides

Color ffff00, name plates


神不在的星期二
浏览 105回答 1
1回答

撒科打诨

如果您正在寻找对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 beforeColor ff00ff, name mercides> carColor ffff00, name plates(?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?是颜色,以六字符开始<col和结束,它是可选的,所以最后有一个>?(?<text>(?><.*?>)?[^<]+)名称组,可以有另一个应答器,但最后一个字符可以是<
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java