【发布时间】:2020-08-10 15:10:12
【问题描述】:
我正在读取字符串中的特殊“格式代码”并尝试拆分字符串,以便将这些格式代码和字符串的文本分开。
格式代码有两种“类型”:“编码”十六进制颜色:§x§7§3§7§5§f§f 和其他格式为§r 的代码。
给定示例字符串:§x§7§3§7§5§f§f§ltest1 §rtest2
我需要将较大的模式拆分为一个整体,然后再拆分较小的模式。我可以分别对这些模式做我想做的事,但是在将它们组合成一个正则表达式时遇到了麻烦。因为第二个模式匹配第一个模式的片段,所以它只是将所有内容分成更小的组。
我正在尝试这个:
for (String substr : "§x§7§3§7§5§f§f§ltest1 §rtest2".split("((?<=(§x(§[0-9a-f]){6}))|(?<=§[0-9a-z])|(?=§[0-9a-z]))")) {
System.out.println(substr);
}
我的预期输出是:
§x§7§3§7§5§f§f
§l
test1
§r
test
我的实际输出是:
§x
§7
§3
§7
§5
§f
§f
§l
test1
§r
test2
当我将表达式拆分为不同的 split 测试时,它们可以工作,只是不能一起工作。
【问题讨论】: