在Java中,每1000个逗号拆分一个字符串
我无法使用正则表达式拆分字符串中每1000个逗号的字符串。我们可以为字符串中的每三个逗号拆分,但不能为第1000个逗号拆分在Java中,每1000个逗号拆分一个字符串,java,regex,Java,Regex,我无法使用正则表达式拆分字符串中每1000个逗号的字符串。我们可以为字符串中的每三个逗号拆分,但不能为第1000个逗号拆分 String data = "0,0,1,2,4,5,3,4,6......"; String[] array = data.split("(?<=\\G\\d+,\\d+,\\d+),"); //Magic :) // to reveal magic see explanation below answer for(String s : array){ S
String data = "0,0,1,2,4,5,3,4,6......";
String[] array = data.split("(?<=\\G\\d+,\\d+,\\d+),"); //Magic :)
// to reveal magic see explanation below answer
for(String s : array){
System.out.println(s);
}
String data=“0,0,1,2,4,5,3,4,6……”;
String[]array=data.split((?这可能就是您要查找的正则表达式:
(\w*,){3}\K\S+
\w Matches a word ([a-zA-Z0-9_])
\w* Matches 0 or infinite number of words...
\w*, ... Followed by a coma
(\w*,){n} Match this group, n times
\K Reset the starting point of the match after the n elements
\S+ Matches any word after the (n-1)th coma
其中n
是元素数,加上1。因此在您的情况下,它应该是1001
话虽如此,regex
可能不是合适的工具:)为什么要使用regex?问问自己:“我明白问题中的regex是做什么的吗?“试着用一个循环找到第1000个逗号的索引,然后做一个子字符串。这个问题怎么会是重复的!当然,除非你认为OP应该在他/她的正则表达式字符串中放置\\d+,
1000次(我相信这也行不通).阅读问题。是否有人尝试过在副本中使用已接受的答案来完成此操作?我认为OP最初在那里获得了代码。@Devilshn查看第二个、第三个等答案。数据也是一个副本,只是最终结果不同。这是OP想要完成的最终结果…每1000个分隔符拆分一次。Granted、 其他一些答案可能会完成这项任务。\K
在JavaGood point@ctwheels中不是有效的标记-这是否已添加到Java正则表达式中?然而,它是.NET、Perl或PCRE的高级功能。@DevilsHnd不幸的是,它在Java中仍然不是一项功能。我意识到这一点,但是本文作者没有也仍然。。.有人投了赞成票