【发布时间】:2014-11-05 21:54:33
【问题描述】:
这是一个示例文本:\1f\1e\1d\020028。我无法修改输入文本,我正在从文件中读取一长串文本。
我想提取以下内容:\1f、\1e、\1d、\02
为此,我编写了以下正则表达式模式:"\\[a-fA-F0-9]"
我正在使用Pattern 和Matcher 类,但我的匹配器无法使用上述正则表达式找到模式。我已经用一些在线正则表达式网站上的文本测试了这个正则表达式,令人惊讶的是它在那里工作。
我哪里出错了?
原文代码:
public static void main(String[] args) {
String inputText = "\1f\1e\1d\02002868BF03030000000000000000S023\1f\1e\1d\03\0d";
inputText = inputText.replace("\\", "\\\\");
String regex = "\\\\[a-fA-F0-9]{2}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(inputText);
while (m.find()) {
System.out.println(m.group());
}
}
输出:没有打印出来
【问题讨论】:
-
我猜你的一些反斜杠正在逃避你不想要的东西。不过,您必须向我们展示您的实际代码才能确定。
-
\\[a-fA-F0-9]查找后跟一个字母或数字的反斜杠。我认为您想查找后跟两个字母或数字的反斜杠。我怀疑你可以弄清楚如何解决这个问题。 -
您是否正确格式化输入字符串?我认为应该是 '\\1f\\1e\\1d\\020028'。
-
为了帮助您更轻松地发布有关如何使用此正则表达式的代码示例。
-
这是您输入文件中的文本吗?我们可以看看你是怎么读的吗?另外,当您打印红色时您会看到什么?
标签: java regex pattern-matching