我似乎找不到这个问题的答案。我想要做的是在Java中拆分一个字符串,但我想在每个字符串中保留分隔符。例如,如果我有以下字符串:
word1{word2}[word3](word4)"word5"'word6'
新字符串数组必须是这样的:
["word1", "{word2}", "[word3]", "(word4)", "\"word5\"", "\'word6\'"]
如何在整个正则表达式或其他形式中实现这一目标?我还在学习Java中的Regex,所以我尝试了一些东西,例如:How to split a string, but also keep the delimiters?
但我没有得到我期望的结果。
我有这个分隔符:
static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";
然后这个方法:
private String[] splitLine() { return tokenFactor.split(String.format(WITH_DELIMITER, "\\(|\\)|\\[|\\]|\\{|\\}|\"|\'")); }
但是那段代码将分隔符拆分为单独的字符串,这不是我想要的
任何人都可以帮助我吗?!!谢谢!
答案 0 :(得分:1)
使用Pattern
和regex
的解决方案:
我将在String
String str = "word1{word2}[word3](word4)\"word5\"'word6'";
Matcher m = Pattern.compile("(([{\\[(\"']\\w+[}\\])\"'])|(\\w+))").matcher(str);
List<String> matches = new ArrayList<>();
while (m.find())
matches.add(m.group());
String[] matchesArray = matches.toArray(new String[0]);
System.out.println(Arrays.toString(matchesArray));
我给了一个让它在数组中的方法,你可以用列表停止