删除两个字符之间的字符串

时间:2013-04-15 11:04:00

标签: java android regex

我在尝试从字符串文件中删除单词时遇到了问题,例如:

    String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";

我想要从字符串中删除第一个单引号和'。'之间的所有内容。 ,结果我想要以下内容:

    result = "data[high] && data[low] || data[now]";

这将是我需要的结果。

到目前为止,我得到的是

    String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";
    text = text.replaceAll("\\'(.*?)\\.", "");

但是这给了我

    result = "data[highlownow']"

我做错了什么?

更新

感谢您的回答,现在我的跟进问题可以说我已经

    String text = "data['danger.high'] && (data['$safe.low'] || data['go.now'] == 'yes')";

我想要以下结果:

    result = "data[high] && (data[low] || data[now] == 'yes')"; 

在这种情况下保持单引号为“是”。

3 个答案:

答案 0 :(得分:2)

您可以这样做:

text = text.replaceAll("\\'([$a-zA-Z]+)\\.", "'").replaceAll("'", "");

text.replaceAll("\\'([$a-zA-Z]+)\\.", "'")会给你:

 data['high'] && data['low'] || data['now']

.replaceAll("'", "");会为您提供所需的结果(不包含')。

data[high] && data[low] || data[now]

答案 1 :(得分:1)

你的正则表达式应该稍微调整一下。查找$个字符和[a-zA-Z]。我假设你想保留单引号。如果不需要,请告诉我。您可以再次对字符串使用replaceAll()来删除单引号。

        String text = "data['danger.high'] && data['$safe.low'] || data['go.now']";
        text = text.replaceAll("\\'([$a-zA-Z]+)\\.", "'");
        System.out.println(text);

输出

  

数据['high']&&数据['低'] ||数据[ '现在']

答案 2 :(得分:0)

你的表达式正在删除从第二个单引号开始的字符 这就是为什么你是这个结果的原因 您应该阻止以']

开头的字符的replaceAll

使用     text = text.replaceAll(“\'([$ a-zA-Z] +)\。”,“'”);