java - 用于拆分字符串以获取运算符的正则表达式

标签 java arrays regex split operators

我有一个字符串 = A+B+CC-D0。 我想使用正则表达式将其拆分以获得一组操作 {+,+,-}

我试过正则表达式:

"[^+-]"

但是输出给了我一个 { ,+,+, ,+} 的数组,为什么?

    String s1 = "A+B+C-D";
    String s2 = "A0+B0";
    String[] op1 = s1.split([^+-]);
    String[] op2 = s2.split([^+-]);
    for(int i = 0; op1.length; i++){
        System.out.println(op1[i]);
    }

这是输出:

Output of op1:
""
"+"
"+"
""
"-"

Output of op2:
""
""
"+"

最佳答案

将除运算符以外的所有字符替换为空字符串,然后根据两个运算符之间存在的边界拆分结果字符串。

String s1 = "A+B+C-D";
String[] op1 = s1.replaceAll("[^+-]","").split("(?<=.)(?=.)");
for(String i: op1){
    System.out.println(i);
}

输出:

+
+
-
  • (?<=.) positive lookbehind 断言匹配之前必须有一个字符。

  • (?=.)肯定前瞻,它断言匹配后必须跟一个字符。

关于java - 用于拆分字符串以获取运算符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792172/

相关文章:

python - 使用 str.extract 方法在 Pandas 中匹配子字符串

java - JdbcCursorItemReader 提交间隔

javascript - 递归过滤对象数组

arrays - 使用数组 VBA 初始化对象

PHP preg_split 如果不在大括号内

java - 如何使用 java Apache Lucene 检索 PDF 文档中的正则表达式搜索字母数字文本?

java - PlayFrameWork SQL 教程?

java - 计算使用哈希表的算法的复杂度

java - Android M - SSLSocket 连接中的 SSLHandshakeException

Java:如何检查二维列表/数组中的 boolean 条件?