有什么方法可以使用正则表达式以我想要的方式拆分字符串?
不,那里没有。正则表达式(如果匹配)返回您包围的字符串和子字符串()
,或者如果您使用全局标志,则返回所有完整匹配项的列表。您不会获得作为其他匹配项的子项的嵌套列表。
将它与 Java 结合起来就可以了。我不懂 Java,但我会尝试用这个类似 java 的代码来解释:
Array match_children (Array input) {
Array output;
foreach (match in input) {
// The most important part!
// The string starts with "[", so it is the beginning of a new nest
if (match.startsWith("[")) {
// Use the same ragex as below
Array parents = string.match(matches 'dotimes' and all between '[' and ']');
// Now, call this same function again with the
match = match_children(parents);
// This stores an array in `match`
}
// Store match in output list
output.push(match);
}
return output;
}
String string = "dotimes [sum 1 2] [dotimes [sum 1 2] [sum 1 3]]";
// "dotimes [sum 1 2] [dotimes [sum 1 2] [sum 1 3]]"
Array parents = string.match(matches 'dotimes' and all between '[' and ']');
// "dotimes", "[sum 1 2]", "[dotimes [sum 1 2] [sum 1 3]]"
// Make sure to use a global flag
Array result = match_children(Array input);
// dotimes
// [
// sum 1 2
// ]
// [
// dotimes
// [
// sum 1 2
// ]
// [
// sum 1 3
// ]
// ]
同样,我不了解 Java,如果需要更多说明,请发表评论。:) 希望这可以帮助。