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

标签 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]

不确定我缺少什么以及为什么我的数组中出现空格条目

最佳答案

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

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

我认为您的分隔符的意思是:

[\\s\\W_]+

关于java - 扫描仪分隔符,Reg。表达问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348692/

相关文章:

r - 如何只从字符串中删除数字

javascript - 使用 $ 和 ^ 的正则表达式中的变量匹配字符串

java - 如何检测spring mvc中的错误

java - java.lang.ref.FinalizerReference 导致的内存泄漏

java - 如何在我的登录应用程序中调用 SOAP 服务?安卓

javascript - 使用正则表达式计算字符串中的特定字母是个坏主意吗?

java - 找不到 'java.lang.StackTraceElement' 的转换器

Java连接池(JNDI)半天后不起作用

python - 正则表达式避免不必要的组

正则表达式:忽略额外的字符