Java String.split()不工作

Java String.split()不工作,java,android,Java,Android,我必须以这种方式拆分字符串: String s = "00JS1B4BJG2C2G3S6C6S5CHG1C4CKS3C1G5S6B3G7BHB7G6G5B"; String[] result = s.substring(2).split("(?<=\\G.{2})"); String s=“00js1b4bjg2c2g3s6c6s5chg1c4cks3c1g5s6b3g7b7g6g5b”; String[]result=s.substring(2).split((?尝试使用此表达式(G.

我必须以这种方式拆分字符串:

String s = "00JS1B4BJG2C2G3S6C6S5CHG1C4CKS3C1G5S6B3G7BHB7G6G5B";
String[] result = s.substring(2).split("(?<=\\G.{2})");
String s=“00js1b4bjg2c2g3s6c6s5chg1c4cks3c1g5s6b3g7b7g6g5b”;
String[]result=s.substring(2).split((?尝试使用此表达式(
G..
而不是
G.{2}
):


为什么?你改变了什么?你为什么改变它?代码转储不是有用的答案。而且?{2}实际上是相同的,而你忽略了其他问题。第二条路呢?@Fr4ncxPerfect!谢谢:)也没有必要使用(?!$)
最后。如果非要我猜的话,一些正则表达式规则在较新版本的Java中发生了变化,Android出于向后兼容性的原因保留了旧的行为。我不确定除了想出另一个解析算法之外,你还能做些什么。试试这个
String[]result=s.substring(2).replaceAll((.{2}))“,“$1-”。拆分(“-”);
的想法是在每两个字符后放置一个分隔符,使用此分隔符进行拆分,在我的例子中,我使用了连字符(-)@T.J.Crowder:我已经将OP的原件(较短)放在编写一个Android项目和一个普通Java项目的代码,并复制结果。Ubuntu上的Java 8和我尝试过的两种环境Android 7.1.1之间的行为肯定有区别。@Commonware:是的,如果Arash的答案中的解决方法解决了这个问题,那么我记得的不是零宽度空间问题。 ["JS","1B","4B","JG","2C","2G","3S","6C","6S","5C","HG","1C","4C","KS","3C","1G","5S","6B","3G","7B","HB","7G","6G","5B"] ["JS", "1B4BJG2C2G3S6C6S5CHG1C4CKS3C1G5S6B3G7BHB7G6G5B"]
s.split("(?<=\\G..)")
s = s.replaceAll("..(?!$)", "$0 ");
s.split(" ");