繁体   English   中英

Java Regexp捕获组包含空间,为什么?

[英]Java Regexp capturing group includes space, why?

我试图解析这个字符串,

"斬釘截鐵 斩钉截铁 [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");

但无济于事

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

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

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

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

如果您将return语句更改为:

return matcher.group(1);

然后我相信它会做你想要的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM