我在尝试从字符串文件中删除单词时遇到了问题,例如:
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')";
在这种情况下保持单引号为“是”。
答案 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] +)\。”,“'”);