Regex 使用分隔符拆分字符串,如果一个分隔符紧跟另一个分隔符,则检索空白
很抱歉,如果这是重复的-但我找不到任何相关的问题。(也许我就是找不到适合这种问题的搜索表达式) 在Java中考虑以下字符串:Regex 使用分隔符拆分字符串,如果一个分隔符紧跟另一个分隔符,则检索空白,regex,split,Regex,Split,很抱歉,如果这是重复的-但我找不到任何相关的问题。(也许我就是找不到适合这种问题的搜索表达式) 在Java中考虑以下字符串: "test:test2+test3++test4:test5+test6" 如您所见,分隔符是:和+ 使用ApacheStringUtils.split(string,“[:+]”方法可以很好地进行拆分,但问题是,如果出现++,则返回的StringArray不包含空白,用于指示存在未使用的值 这意味着我需要以下输出: "test" "test2" "tes
"test:test2+test3++test4:test5+test6"
如您所见,分隔符是:
和+
使用ApacheStringUtils.split(string,“[:+]”
方法可以很好地进行拆分,但问题是,如果出现++
,则返回的StringArray
不包含空白,用于指示存在未使用的值
这意味着我需要以下输出:
"test"
"test2"
"test3"
" " <-- whitespace!
"test4"
"test5"
"test6"
“测试”
“测试2”
“测试3”
这就是你需要的吗
String s = "test:test2+test3++test4:test5++test6";
String[] s1 = s.replaceAll ("[:+]{1}", " ").split (" ");
for(int i = 0;i<s1.length;i++){
System.out.println (s1[i]);
}
这应该适合您:
String string = "test:test2+test3++test4:test5+test6";
string.replaceAll("([:+]){2,}", "$1 $1").split("[:+]")
输出:
test
test2
test3
test4
test5
test6
试验
测试2
测试3
“”
测试4
测试5
测试6
请参阅带有空格的标记#4(我添加了引号以演示)。你好,阿达斯,首先感谢您的回答。您描述的输出与StringUtils.split(“[:+]”)的输出相同,但实际上我需要在test3和test4之间的数组中使用空格。我将更新我的问题与想要的输出,以澄清它!美好的我还将尝试您的解决方案,因为我可以想象这两种方法在性能上有所不同。谢谢嘿,Adarsh,我的问题中没有提到这个例子,但是:如果++出现在字符串的末尾,我还需要一个空格。现在只有来自anubhava的方法在这种情况下返回空白。我想我应该添加这个信息。太好了,非常感谢!这正是我想要的你能解释一下为什么replaceAll方法是必要的吗(因为我不是regexp专家,它实际上在做什么)?会帮上大忙的!;)当然可以replaceAll
正在查找两个或多个+或:
并在它们之间插入空格,请参见$1$1
,其中$1
为匹配组#1。rest是一个简单的拆分操作。遗憾的是,我忽略了:StringUtils.splitPreserveAllTokens也是我问题的解决方案。后期注意:如果使用以下参数someString.split(\\\+”,-1)