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

时间:2011-09-29 07:38:46

标签: java regex escaping

首先,我要为我的英语不好道歉,请让我解释一下我的情况, 假设我有2个文本框供用户输入。在服务器端,我想结合使用 两个字符串作为由','字符分隔的单个字符串。例如,如果是用户 将第一个文本框输入为“hello world”,将第二个文本框输入“foo bar”, 最后的字符串应该是“hello world,foo bar”。需要拆分此字符串 稍后用于其他操作以利用其内容。所以当字符串被拆分时,就像 ',''字符用作分隔符,结果字符串 将会 string [0] =“你好世界” string [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]);
    }

返回的结果是

string [0] = hello /,worl

string [1] = foo /,bar

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

string [0] = hello /,world

string [1] = foo /,bar

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

1 个答案:

答案 0 :(得分:7)

使用背后的负面看法

testText.split("(?<!/),");

负面的背后隐藏确保/之前没有,而没有匹配。