0

我正在尝试解析这个字符串,

"斬釘截鐵 斩钉截铁 [zhan3 ding1 jie2 tie3] /to chop the nail and slice the iron (idiom)/resolute and decisive/unhesitating/definitely/without any doubt/";

使用此代码

private static final Pattern TRADITIONAL = Pattern.compile("(.*?) ");

    private String extractSinglePattern(String row, Pattern pattern) {
        Matcher matcher = pattern.matcher(row);
        if (matcher.find()) {
            return matcher.group();
        }
        return null;
    }

但是,由于某种原因,返回的字符串末尾包含一个空格

org.junit.ComparisonFailure: expected:<斬釘截鐵[]> but was:<斬釘截鐵[ ]>

我的模式有问题吗?我也试过

private static final Pattern TRADITIONAL = Pattern.compile("(.*?)\\s");

但无济于事

我也尝试在模式末尾匹配两个空格,但不匹配(只有一个空格)。

4

2 回答 2

2

您正在使用Matcher.group()记录为:

返回与前一个匹配项匹配的输入子序列。

比赛包括空间。比赛中的捕获组没有,但您没有要求。

如果您将退货声明更改为:

return matcher.group(1);

那么我相信它会做你想要的。

于 2012-07-07T09:47:09.593 回答
0

使用这个正则表达式(.+?)(?=\s+)

于 2012-07-07T09:48:10.013 回答