java - 如何在 Java 中保留分隔符的同时在不同分隔符之间分割文本?

标签 java regex string split

是否可以使用不同的分隔符分割文本,同时将分隔符保留在返回的数组中。

例如,如果我有一个包含以下内容的文本: sin({$=i$}^2

我想将它分割成一个如下所示的数组:

['sin(' , '{$=i$}', '^2']

而我的分隔符是 {}。我设法实现的是一个如下所示的数组: ['sin(' , '{$=i$', '}^2']

但我无法使用这段代码将最后一个分隔符 } 放在正确的位置:

String text = "sin({$=i$}^2";
String[] splitted = text.split("(?=[{}])");

最佳答案

根据您的示例,您可能正在寻找

split("(?<=\\})|(?=\\{)")

我们正在使用look-around机制

  • (?<=\\})在有 } 的地方分割在它之前(这意味着在 } 之后分割)
  • (?=\\{)在有 { 的地方分割在它之后(这意味着在 { 之前分割)

但说实话split甚至regex可能不是您正在寻找的工具。尝试考虑构建自己的解析器/状态机。

关于java - 如何在 Java 中保留分隔符的同时在不同分隔符之间分割文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35524712/

相关文章:

c++ - boost 正则表达式中的命名捕获/组列表

string - 在 O(n) 中使用哈希表在字符串 S 中查找包含字符串 T 中所有字符的最小长度子字符串

java - 当我尝试将数据插入 sqlite 时发生错误

java - 如何使用java代码在jsp页面中查看excel文件?

PostgreSQL 正则表达式 'interval' 函数

r - 将字符串拆分为 R 中的列

java - 如何将标准输入转换为字符串?

java - 无法在 Android Studio 中解析方法 'findViewByID(int)'

java - RXJava2中如何每15秒重复一次操作以及如何启动和停止它

php - 正则表达式在正则表达式中第一次出现#STRING# 时停止