Java 使用正则表达式问题删除字符串
我正在尝试使用StringUtils.removeAll方法删除字符串的部分,并保留其他部分:Java 使用正则表达式问题删除字符串,java,json,regex,Java,Json,Regex,我正在尝试使用StringUtils.removeAll方法删除字符串的部分,并保留其他部分: String locations = [{"code":"b","name":"Beavercreek"},{"code":"bj","name":"Beavercreek Juvenile"},...] 这是我的正则表达式 StringUtils.removeAll(result.get("locations").toString(),"\\{\"code\":,\"name\":^[a-zA-Z
String locations = [{"code":"b","name":"Beavercreek"},{"code":"bj","name":"Beavercreek Juvenile"},...]
这是我的正则表达式
StringUtils.removeAll(result.get("locations").toString(),"\\{\"code\":,\"name\":^[a-zA-Z0-9_.-]*$\"\"\\}");
它没有删除任何内容,我无法获得正确的正则表达式?看起来您试图解析的字符串是JSON,因此我建议使用JSON解析器。不过,为了完整起见,我也将使用正则表达式为您提供一个解决方案
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) throws Exception {
String locations = "[{\"code\":\"b\",\"name\":\"Beavercreek\"},{\"code\":\"bj\",\"name\":\"Beavercreek Juvenile\"}]";
// Parsing Using a JSON Parser (Recommended)
ObjectMapper jsonMapper = new ObjectMapper();
Model[] modelArray = jsonMapper.readValue(locations, Model[].class);
for(Model model : modelArray) {
System.out.println(model.toString());
}
// Parsing Using String.replaceAll with regex
locations = locations.replaceAll("\\{\"code\":", "");
locations = locations.replaceAll("\"name\":", "");
System.out.println(locations.replaceAll("\\}", ""));
}
static class Model {
private String code;
private String name;
public Model() { }
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return String.format("%s, %s", code, name);
}
}
}
输出:
// JSON Parsing
b, Beavercreek
bj, Beavercreek Juvenile
// REGEX Parsing
["b","Beavercreek","bj","Beavercreek Juvenile"]
你想删除什么?为什么你的正则表达式包含<代码> ^ < /代码>和<代码> $> /代码>(它们代表字符串结束的开始,所以在正则表达式中间使用它们没有什么意义)。为什么你使用正则表达式而不是适当的JSON解析器,让你把这个字符串转换成JSON对象,你可以修改你想要的方式?<代码>,\“name \”:\ [AZ-Z09Y.-] **?如果要删除
名称:值
<代码>\“代码\”:“[a-zA-Z0-9.-]*?\”,如果要删除code:value
。但是我会接受@Pshemo的建议!