我使用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]
不确定我错过了什么以及为什么我在数组中获得了空白条目
答案 0 :(得分:4)
你的正则表达式匹配一个或多个空格,然后是一个或多个非单词,或者一个或多个下划线。
因此,对于“$ _”的输入,它会说,空间是匹配!捕获下一个分隔符之前的内容... $是匹配!返回空格和$之间的空字符串。捕获下一个分隔符之前的内容.. _是匹配!返回$和_之间的空字符串。
我认为你的分隔符是:
[\\s\\W_]+
答案 1 :(得分:0)
也许是因为你使用空格或非单词字符或下划线作为分隔符。你怎么会这样他们中的几个人一个接一个地混在一起?