使用正则表达式处理我自己的转义字符

wor*_*l.j 4 java regex escaping

首先,我要为我可怜的英语道歉,请让我解释一下我的情况,假设我有2个文本框供用户输入.在服务器端,我想将两个字符串组合为由','字符分隔的单个字符串.例如,如果用户输入第一个文本框为"hello world",第二个文本框为"foo bar",则最终字符串应为"hello world,foo bar".此字符串需要稍后拆分,以便其他操作使用其内容.因此,当字符串被拆分时,因为','字符用作分隔符,结果字符串将分别是字符串[0] ="hello world"字符串[1] ="foo bar".

当然,当用户在其字符串中键入","字符时,这会导致无法正确拆分的字符串.例如,当用户在第一个文本框中输入"hello,world"并在第二个文本框中输入"foo,bar"时,最后的字符串将是"hello,world,foo,bar",并且拆分结果将错误地为4个单独的字符串

我想出了自定义转义字符的概念.即如果用户输入','字符,它必须在服务器端添加'/'字符.例如,如果用户输入"hello,world"和"foo,bar",则最后的字符串将是"hello /,world,foo /,bar",现在可以拆分,因为已知单个精确的分隔符是单个的','没有'/'字符的字符在它之前.

我写了一些java代码来处理它,如下所示:

    String testText = "hello/,world,foo/,bar";
    String[] split = testText.split("[^/],");
    for(int i=0; i<split.length; i++)
    {
        System.out.println(split[i]);
    }
Run Code Online (Sandbox Code Playgroud)

返回的结果是

string [0] = hello /,worl

string [1] = foo /,bar

这是不正确的,因为"世界"这个词的'd'字符丢失了.似乎这个案例的分隔符是某个字符,它不是/后跟','这是很容易理解的.但我想要的东西就像"用分隔符分割字符串','只跟随不是'/'字符的字符.所以适用于我的情况,只有','字符串中间的字符将被拆分,所以最终结果将如下正确:

string [0] =你好/,世界

string [1] = foo /,bar

我意识到我可能要重写我的正则表达式,但我不知道如何.任何建议都会受到欢迎.

ste*_*ema 7

使用背后的负面看法

testText.split("(?<!/),");
Run Code Online (Sandbox Code Playgroud)

/,没有匹配的情况下,缺乏外观确保没有.