在这种情况下,我会使用像(x[0-9A-Fa-f]{1,4})+
这样的表达式来识别每行上没有反斜杠的UTF-8数据块。
从那里,您可以使用Java的string.split(“x”)来创建一个字符串数组,代表没有“x”的字节。如果regexMatch
是包含从你的表情像“x0ax0fx12”匹配的字符串,那么你可以做这样的事情:
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
String inputText = "blah blah x0ax0fx12 blah blah";
String regexMatch = "";
Pattern pattern = Pattern.compile("(x[0-9A-Fa-f]{1,4})+");
Matcher matcher = pattern.matcher(inputText);
if (matcher.find()) {
regexMatch = matcher.group(0);
}
String replacedOutput = "";
for (String splitStr : regexMatch.split("x")) {
if (!splitStr.equals("")) {
replacedOutput += "\\x" + splitStr;
}
}
System.out.println(replacedOutput);
}
}
这应该输出“\ X0A \ X0F \ X12”,你应该能够替代它回到匹配器找到它的地方,匹配到文件中的行。
现在,几乎不可能提供帮助。 'X [A-FA-F0-9] {2}'是你可以试着和'\\ $ 0'取代,但难保你不会取代比你更需要。 –
你将很难写出一个足够聪明的正则表达式,只留下“精确”和“被削弱”的单词。 – VGR