扫描仪分隔符,Reg。表达问题

时间:2011-06-14 19:08:02

标签: java regex

我使用reg有一个小问题。带扫描仪的表达式

这是代码:

String name;
    Pattern p = Pattern.compile("\\s+|\\W+|\\_+");
    ArrayList<String> reay = new ArrayList<String>(1000);
    try {
        Scanner asdf = new Scanner(new File(s)).useDelimiter(p);
        while (asdf.hasNext()) {
            name = asdf.next();
            reay.add(name);

        }
        asdf.close();
    }

和结果数组(在文本文件中使用了很多非单词字符):

[arst, , tdnxc, , rst, , arst, , arst, wfp, arst, , arst]

不确定我错过了什么以及为什么我在数组中获得了空白条目

2 个答案:

答案 0 :(得分:4)

你的正则表达式匹配一个或多个空格,然后是一个或多个非单词,或者一个或多个下划线。

因此,对于“$ _”的输入,它会说,空间是匹配!捕获下一个分隔符之前的内容... $是匹配!返回空格和$之间的空字符串。捕获下一个分隔符之前的内容.. _是匹配!返回$和_之间的空字符串。

我认为你的分隔符是:

[\\s\\W_]+

答案 1 :(得分:0)

也许是因为你使用空格或非单词字符或下划线作为分隔符。你怎么会这样他们中的几个人一个接一个地混在一起?