Java 扫描仪分隔符,Reg。表达问题
我在使用注册表时遇到了一个小问题。带扫描仪的表达式 代码如下:Java 扫描仪分隔符,Reg。表达问题,java,regex,Java,Regex,我在使用注册表时遇到了一个小问题。带扫描仪的表达式 代码如下: 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); w
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();
}
不确定我遗漏了什么以及为什么在数组中会出现空白项,可能是因为您使用空白或非单词字符或下划线作为分隔符。例如,如果将其中的几个直接混合在一起,会发生什么情况?您的正则表达式匹配一个或多个空格,然后匹配一个或多个非单词,然后匹配一个或多个下划线 因此,对于“$”的输入,它会说,空间是匹配的!捕获下一个分隔符之前的内容…$这是一场比赛!返回空格和$之间的空字符串。捕获下一个分隔符之前的内容这是一场比赛!返回介于$和\之间的空字符串 我想你的意思是你的分隔符是:
[\\s\\W_]+
仅供参考,
\W
包含空格字符,因此[\s\W\u]
可以写成[\W\u]
(“[\\W\u]”
,在Java源代码中)。
[\\s\\W_]+