Java 使用动态值分隔符分隔

Java Split with delimiter with dynamic value

我需要将我的文本拆分成多个部分并保留分隔符,我知道我可以使用下面的代码来完成 Here:

Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))"))

但我卡住的是我的文本包含分隔符,里面有一个值,我的分隔符是 @[x]@ 其中 x 是一个可以是 任意数字 的值。例如:@[1]@、@[44]@。我想要实现的是获得如下数组:

text : "Hello my Name is blabla.@[1]@How are you today?@[2]@ByeBye"

以及我需要得到的东西:

[ "Hello my Name is blabla.", "@[1]@", "How are you today?", "@[2]@", "ByeBye" ]

我怎样才能做到这一点?提前致谢。

尝试使用以下正则表达式作为分隔符:

((?<=(@\[\d\]@))|(?=(@\[\d\]@)))

基本上用表达式 (@\[\d\]@) 替换分号,其中 \d 匹配任何数字。

如果可以存在一个以上的数字,您可以为可能的数字数指定一个范围,例如 \d{1,1000} 而不是 \d 最多有 1000 个数字。使用 \d+ 等表达式的未知位数不能与 Java 后视正则表达式一起使用。