m0_62267751 2022-11-08 16:54 采纳率: 85.7%
浏览 44
已结题

java正则表达式使用不正确

                 String s = "p1&p2";
                if(s.matches(".*[0-9].*")) {         //如果字符串中有数字
                s = s.replaceAll("^[A-Za-z0-9]$", "");    //把数字+字母的组合提取出来
                for (int i = 0; i < s.length(); i++) {
                    set.add(String.valueOf(s.charAt(i)));//去重
                    System.out.println(set);
                }
}

我的正则表达式是想识别数字和字母的组合,
期望输出:
[p1,p2]
但是输出结果是所有单个字符:

img


他直接读取了第一个p和最后一个2,所以这个应该怎么解决呢

  • 写回答

2条回答 默认 最新

  • 饭堂家老 2022-11-08 18:11
    关注
    
            Set set = new HashSet();
            String s = "p1&p2";
            Matcher matcher = Pattern.compile("[A-Za-z0-9]+").matcher(s);
            while (matcher.find()) {
                set.add(matcher.group());
            }
            System.out.println(set);
    

    要找字母数字的话直接循环查找就行了,没必要替换

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 修改了问题 11月8日
  • 创建了问题 11月8日