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

必须拆下或更换。用于删除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