java - Java中如何分割多行字符串

标签 java string split

我有以下数据文本:

[data]A[/data]
aaa
4 5 8 
[data]B[/data]
bbb
3 1 9 
[data]C[/data]
ccc
6 5 2
... 

我想将它们分成以下 3 个单元:

第一单元:

[data]A[/data]
aaa
4 5 8 

第二单元:

[data]B[/data]
bbb
3 1 9 

第三单元:

[data]C[/data]
ccc
6 5 2

所以我的代码如下所示:

String Units[]=dataText.split("[data]");

但是,这并不能正确执行,分割它的正确方法是什么?

如果我使用正则表达式,我应该如何编写表达式?

最佳答案

使用正则表达式(?ms)(?<=.)(?=^\[) :

    String[] units = dataText.split("(?ms)(?<=.)(?=^\\[)");

参见regex101.com用于演示。

说明:

(?ms)       Turn on MULTILINE ('^' and '$' match after/before line terminator)
                and DOTALL (aka "single line", '.' matches any character)
(?<=.)      Must be preceded by a character (needs 's' flag)
               Used to prevent matching very first '['
(?=^\[)     Must be followed by a '[' at the beginning of a line (needs 'm' flag)

关于java - Java中如何分割多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54952094/

相关文章:

regex - 如何将段落重新换行至特定行长?

java - 使用 SAX Parser,获取属性的值

linux - 更改文件名并复制到不同的目录

string - 如何从matlab中的字符串中获取数字

python - Pandas split 不起作用

python - 正则表达式除以大写

java - Android 绘制实际公交路线折线

java - 将信息传递到构造函数中

java - 磁盘上的 .class 文件是否必须遵循与其在 Java 中的限定名称相同的目录结构才能运行它?

python - 检查字符串是否包含带有 forbiddenfruit 的列表中的任何字符串