重复似乎打破了我的正则表达

时间:2013-06-10 10:01:59

标签: java regex parsing

我正在用java编写解析器,并将问题缩小到我的一个正则表达式。在使用它并使案例变得更简单和简单之后,我最终得到了一个测试.txt文件,其简单:

read a

和一个看似如下的模式:

... = Pattern.compile("[a-zA-Z]+");

“read”在上一步中解析,然后我的程序抛出错误,因为“a”无法识别。我正在对输入进行标记,并且没有空格。我不得不将正则表达式修改为:

[a-z]

让它匹配。如果我添加“+”或其他任何失败。有什么见解吗?

编辑:再看一遍后,[a-zA-Z]正常工作,它的'+'正在打破它。

1 个答案:

答案 0 :(得分:0)

尝试此代码,它将匹配以字母开头的任何文本,可选的空格数,然后使用更多字母。 它将在您的空间后打印整个匹配和特定值。

Pattern pattern = Pattern.compile("\\w+\\s*?(\\w+)");
String test = "read a";
Matcher matcher = pattern.matcher(test);
if (matcher.find()) {
    System.out.println("WHOLE MATCH: " + matcher.group());
    System.out.println("VALUE AFTER SPACE: " + matcher.group(1));
}

输出:

WHOLE MATCH: read a
VALUE AFTER SPACE: a