java - 分割字符串时如何识别转义字符

标签 java regex string

我有 "Hello,World\\,,1,2,3" 的字符串值,我需要用 , 分隔符将其拆分。但是,该方法还需要在分割时识别转义字符,最终输出需要是一个数组,如

[Hello, World,, 1, 2, 3]

我有一个方法可以做到这一点,但它无法识别转义字符。下面提供了,

public static String[] tokenize1(String record, char delimiter) {

        String delim = String.valueOf(delimiter);
        String[] arr = record.split(delim);

        return arr;
    }

最佳答案

您可以尝试在逗号上进行拆分,但使用否定的lookbehind,断言逗号没有被反斜杠转义:

String input = "Hello,World\\,,1,2,3";
String[] parts = input.split("(?<!\\\\),");
for (String part : parts) {
    // uncomment to also remove backslash
    // part = part.replaceAll("\\\\,", ",");
    System.out.println(part);
}

输出:

Hello
World\,
1
2
3

Demo

关于java - 分割字符串时如何识别转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47192613/

相关文章:

regex - perl:正则表达式,如何在找到的正则表达式左侧获取数据

java - 字符串问题 - Java

java - Java 尝试判断字符串是否只包含字母

java - CriteriaBuilder JPA 2.0 Eclipse链接

java - Lettuce 在集群中进行故障转移

java - 尝试从Java中的字符串中删除撇号

php - 如何在没有 mbstring 扩展名的情况下处理 PHP 中的 unicode

java - 如何在注入(inject) JBOSS JNDI 数据源的 Spring 中运行 JUnit 测试

java - 尝试获取 JMH 锁时出现异常

java - 用于在 JavaScript 中查找 Java 格式字符串的正则表达式