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日

悬赏问题

  • ¥15 matlab在安装时报错 无法找到入口 无法定位程序输入点
  • ¥15 收益高的广告联盟有哪些
  • ¥15 Android Studio webview 的使用问题, 播放器横屏全屏
  • ¥15 删掉jdk后重新下载,Java web所需要的eclipse无法使用
  • ¥15 uniapp正式环境中通过webapi将本地数据推送到设备出现的跨域问题
  • ¥15 xui建立节点,显示错误
  • ¥15 关于#单片机#的问题:开始、复位、十进制的功能可以实现,但是切换八进制的功能无法实现(按下按键也没有效果),把初始状态调成八进制,也是八进制可以实现但是切换到十进制不行(相关搜索:汇编语言|计数器)
  • ¥15 VINS-Mono或Fusion中feature_manager中estimated_depth是特征的深度还是逆深度?
  • ¥15 谷歌浏览器如何备份抖音网页数据
  • ¥15 分别有什么商家下面需要非常多的骑手为它工作?