java - 对于 Java 中的 "[,,.\\s]",正则表达式拆分字符串效果不佳

标签 java regex string split

我希望通过“,”或“,”(中文逗号)或“.”将一个字符串分成组。或任何空白字符(如空格或“\n”)。

我是正则表达式新手。 我编写了以下测试用例:

    String str2="word1 , word2,,word3.word4 word5";
    String[] formated=str2.split("[,,.\\s]");
    for(int i=0;i<formated.length;i++){
        System.out.println("i="+i+ "   "+formated[i]);
    }

输出是:

i=0   word1
i=1   
i=2   
i=3   word2
i=4   
i=5   word3
i=6   word4
i=7   word5

为什么当标志组合在一起时它不起作用?当像“,,”这样的东西组合在一起时,我是否应该做更多的事情,使其成为一个完整的符号来 split ?

最佳答案

你可以试试。您需要添加 + 来匹配一个或多个。

[,,.\s]+

这里是demo

<小时/>

Quantifiers

量词允许您指定要匹配的出现次数。如果您使用x+,则该模式会尝试尽可能多地匹配x

word1 , word2,,word3.word4 word5
     ^^^------All three characters are matched at a time

word1 , word2,,word3.word4 word5
             ^^------both characters are matched at a time

如果不使用+,则仅使用单个字符来分割字符串。

enter image description here

关于java - 对于 Java 中的 "[,,.\\s]",正则表达式拆分字符串效果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218161/

相关文章:

c - 使 scanf 拾取字符串中间的空格

java - Tomcat6问题和PermGen空间

java - 在 ListView 中添加单个开关

java - JSch:从跳转服务器登录到目标服务器。跳转服务器要求输入 key 的密码,该 key 接受空字符串

c++ - 使用 C++ 替换或删除正则表达式中不存在的字符

java - 在Java中如何用字符串替换任意字符?

java - 推土机日期映射

php - 可选的空格正则表达式

javascript - 正则表达式只允许输入 3 位小数,其中 0.001 是可能的最小数字,而不是 0

python - 如果 python unicode 对象被错误解码怎么办