Java正则表达式在字符串中查找字符序列

时间:2011-10-03 02:38:38

标签: java regex

我想知道我的字符串是否=& &安培;顺序在里面。如果是,那么我想编码第二个&amp ;.如何使用java正则表达式找到它?

我的字符串是这样的:

  

α=猫和b =狗&安培;猫和C =猴

由于 切塔尼亚

4 个答案:

答案 0 :(得分:3)

就像Mosty和Ted所说的那样,或许最好的方法就是检测并逃避'&'。

但是,如果你想让一个正则表达式为你完成这项工作,那么它就是:

String s = "a=cat&b=dog&cat&c=monkey";

s = s.replaceAll("&(?=[^=]*&)", "&");

System.out.println(s);

答案 1 :(得分:2)

为什么你不只是split呢?

首先将其拆分为“&”,然后取出第二个元素

答案 2 :(得分:0)

您可以使用以下格式:

if (string.contains("=&&"))
{
 // do something
}
else
{
 // do something else
}

我不知道你的意思是“编码&”虽然。你能澄清一下吗?

答案 3 :(得分:0)

在形成连接的名称 - 值对字符串之前,更容易在值中转义&。但鉴于已经编码的字符串,我认为Mosty建议的变体可能效果最好:

String escapeAmpersands(String nvp) {
    StringBuilder sb = new StringBuilder();
    String[] pairs = nvp.split("&");
    if (pairs[0].indexOf('=') < 0) {
        // Maybe do something smarter with "a&b=cat&c=dog"?
        throw new Exception("Can't handle names with '&'");
    }
    sb.append(pairs[0]);
    for (int i = 1; i < pairs.length; ++i) {
        String pair = pairs[i];
        sb.append(pair.indexOf('=') < 0 ? "&amp;" : "&");
        sb.append(pair);
    }
    return sb.toString();
}

这可能比常规尝试使用正则表达式更快。<​​/ p>