在這種情況下,我會使用像(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