Java 使用正则表达式问题删除字符串

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

我正在尝试使用StringUtils.removeAll方法删除字符串的部分,并保留其他部分:

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的建议!