Java 如何用正则表达式替换字符序列?

Java 如何用正则表达式替换字符序列?,java,regex,xml,hex,Java,Regex,Xml,Hex,我需要删除xml中的无效字符引用,也就是说,如果我的xml输入中有 &#x1A; 必须拆下或更换。用于删除XML中无效字符的代码不起作用,因为输入流已经在数字引用中转换了这些字符。我知道无效的xml字符是20的十六进制数,但我不知道如何生成正则表达式。我想用Java编写代码。以下是一些示例代码,可以帮助您入门: // Init replacement map Map<Matcher, String> replacementMap = new HashMap<Match

我需要删除xml中的无效字符引用,也就是说,如果我的xml输入中有

&#x1A;

必须拆下或更换。用于删除XML中无效字符的代码不起作用,因为输入流已经在数字引用中转换了这些字符。我知道无效的xml字符是20的十六进制数,但我不知道如何生成正则表达式。我想用Java编写代码。

以下是一些示例代码,可以帮助您入门:

// Init replacement map
Map<Matcher, String> replacementMap = new HashMap<Matcher, String>() {
    {
       // Put your replacement rules here...
       put(m("regex1"), "replacement1");
       put(m("regex2"), "replacement2");
       // ...
    }

    // Helper method for quickly creating a matcher and improve code readability
    private Matcher m(String regex) {
        return Pattern.compile(regex).matcher("");
    }
};

// Load source string
String source = loadSourceString();

// Perform replacements
for(Map.Entry<Matcher, String> e: replacementMap.entrySet()) {
    e.getKey().reset(source).replaceAll(e.getValue());
}
//初始化替换映射
Map replacementMap=newhashmap(){
{
//把你的替换规则放在这里。。。
出售(m(“regex1”),“替换1”);
put(m(“regex2”),“replacement2”);
// ...
}
//用于快速创建匹配器和提高代码可读性的助手方法
私有匹配器m(字符串正则表达式){
返回Pattern.compile(regex.matcher)(“”);
}
};
//加载源字符串
字符串源=loadSourceString();
//更换
对于(Map.Entry e:replacementMap.entrySet()){
e、 getKey().reset(源).replaceAll(如getValue());
}
首先创建替换的映射,然后将要更改的文本加载到字符串中。我们通过在替换字符串前面存储
Matcher
实例来避免模式编译开销

以下是替换规则的一些示例:

  • put(m(“&x#[^;]{2};”)”)

这是最通用的方法。它删除任何字符序列

  • put(m(“&x#[2-9A-F][\dA-F];”),BAZ”)

这种方法用
BAZ
替换十六进制范围[20-FF]中的任何字符序列

  • put(m(“&x#.F;”,“FOO”)

这一个将以
F
结尾的任何字符序列替换为
FOO