Java正则表达式--关于在线测试能够通过但是Java中无法匹配

2023-05-16

问题抛出

在问题4的Problem1中的getMentionedUsers函数。其中需要去匹配@和后面的合法的用户名。从而获得某个人@了哪些用户。并且不能匹配类似邮箱中的@字符。在使用正则表达式的时候,我想到的是用@前面不能是用户名的合法字符,@的后面是1个或多个用户名的合法字符,所以一开始我写的正则表达式是
Pattern = “[^a-zA-Z0-9_-]@[a-zA-Z0-9_-]+”;
经过网页上的在线测试,可以正确识别出我们要找的字符。
这里写图片描述
但是在Java中的程序却无法正确识别:(代码和输出结果如图)
这里写图片描述
这里写图片描述

原因

在百度上找了许多关于“正则表达式在线测试能够匹配,java却无法匹配”的问题。
原因是:Java中的”\”需要经过转义,因此我们需要输入”\”来表示输入一个“\”。
这里写图片描述
这里写图片描述

解决

但是将写的正则表达式进行转义等还是无法识别。考虑到可能是全局匹配的问题。因此在正则表达式前面加上 ”.” ( .连在一起就意味着任意数量的不包含换行的字符 )。
Pattern = “.*[^a-zA-Z0-9_-]@[a-zA-Z0-9_-]+”;
经过测试成功。
这里写图片描述
我们使用下面的代码来进行多次匹配:

 while(m.find())
{
        // 处理
        String string = m.group();
}

其他发现

同时发现另外一个问题,在匹配具有多个@的时候,这时只能找到最后一个@。经过查询百度,发现匹配是有惰性匹配和贪婪匹配以及支配匹配的。为了让匹配尽量少。所以正则表达式写成:
Pattern = “.*?[^a-zA-Z0-9_-]@[a-zA-Z0-9_-]+”;
至此,正确完成功能。

参考

惰性匹配和贪婪匹配以及支配匹配:http://www.jb51.net/article/62876.htm
java正则表达式语法:http://www.runoob.com/java/java-regular-expressions.html
正则表达式在线测试:http://tool.oschina.net/regex/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java正则表达式--关于在线测试能够通过但是Java中无法匹配 的相关文章

  • 20 分钟梳理 Spring 全家桶 !

    作 者 xff1a Daisy 授权转自IT技术思维 xff0c 每日精选优质干货 xff0c 欢迎关注 xff01 xff1e xff1e xff1c xff1c Spring框架自诞生以来一直备受开发者青睐 xff0c 有人亲切的称之为
  • Linux添加软件分类(GNOME桌面)

    Linux添加软件分类 xff08 GNOME桌面 xff09 之前安装TIM deepin wine 的时候发现TIM的分类为chat xff0c 而系统默认没有这个分类 xff0c 所以TIM就很自然的被划分到 其他 里边去了 这强迫症
  • gnome扩展推荐

    引言 xff1a gnome在Linux世界里作为一个比较流行的桌面环境 xff0c 默认不是十分美观 xff0c 有些功能也没有 xff0c 这个时候我们就可以选择安装扩展去个性化gnome 下面是我的桌面截图 xff0c 我利用了扩展实
  • SpringBoot + Redis实现布隆过滤器

    一 简述 关于布隆过滤器的详细介绍 xff0c 我在这里就不再赘述一遍了 我们首先知道 xff1a BloomFilter使用长度为m bit的字节数组 xff0c 使用k个hash函数 xff0c 增加一个元素 通过k次hash将元素映射
  • 屏蔽效能预估

    今天完成了屏蔽效能预估部分的程序 由于公式比较多 xff0c 而且就编程本身而言技术含量不高 xff0c 因此不将源代码贴出 xff0c 有需要者可以联系我 程序界面如下 xff1a
  • SSH 命令的11种用法

    使用ssh连接远程主机 最简单的用法只需要指定用户名和主机名参数即可 xff0c 主机名可以是 IP 地址或者域名 ssh user 64 hostname ssh连接到其他端口 SSH 默认连接到目标主机的 22 端口上 xff0c 可以
  • Spring配置的可选方案(三种配置方式)

    版权声明 xff1a 本文摘自 Spring实战 第4版 xff0c 美 Craig Walls 著 xff0c 张卫滨 译 本文仅作为学习与交流使用 xff0c 如有侵权请留言联系作者 转载请注明出处 目录 一 自动化装配Bean 注释
  • ftp工具

    本文会介绍java代码的ftp工具使用 xff0c 代码实现的功能难免不全 xff0c 要完整的体验ftp功能 xff0c 建议使用该ftp工具 xff1a iis7服务器管理工具 iis7服务器管理工具 xff08 曾用名 xff1a I
  • windows server 2000 r2 设置FTP文件服务器

    最近有一个需求需要将我们自己的一台windows服务器设置文件服务器 xff0c 小小记录一下 xff0c 设置过程 搭建IIS 第一步 xff1a 打开控制面板 第二步 xff1a 点击 打开或关闭 Windows 功能 第三步 xff1
  • ubuntu通过shell脚本实现服务自启和自动关机

    通常服务器开启后需要输入一大堆繁琐的进入文件 启动服务等命令 xff0c 每天如此就会逼着自己寻找捷径 xff0c 毕竟时间不用来学习就是在浪费生命嘛 xff1a Shell脚本挺身而出 xff1a 实现 xff1a 1 配置开机root账
  • 是什么导致了nginx.service: control process exited, code=exited status=1?

    是什么导致了nginx service control process exited code 61 exited status 61 1 xff1f 今天使用脚本安装nginx服务时遇到下面的问题 xff1a 那就先敲命令呗 xff0c
  • .jar与sources.jar区别

    首先 xff0c 当我们在下载jar包与引入jar包的时候可能会发现 xff0c 存在jar文件与相应的sources jar文件 如下图所示 xff1a 这个时候 xff0c 到底该下载哪一个 xff0c 或者我们需要的是哪一个 是jun
  • bat暂停5秒

    choice T 5 C ync CS D y n
  • Linux 开机自启动

    一 无界面的程序自启动 etc rc local 1 编辑 etc rc local vi etc rc local 2 添加要执行的命令 在exit 0 之前 注意 xff1a 这里的执行命令都必须是全路径的 xff0c 就算你添加到了
  • 使用firefox color自定义firefox的主题

    本说明基于firefox 79 轻量级主题 引用 xff1a firefox关于主题的说法 xff0c firefox现在仅支持轻量级主题了 那么什么是轻量级主题呢 xff1f mozilla官方并没有明确的定义 xff0c 我的理解是 x
  • TCL判断条件

    编写TCL代码时遇要写一个if判断条件 xff0c 很简单的一个语句 xff0c 结果却费了很大力气才搞定 要判断的是 xff0c 如果执行info exists成功而且某全局数组C的某个成员大于0 xff0c 正确的语句为 xff1a i
  • 实验二:线性时间选择

    实验二 xff1a 线性时间选择 问题描述 xff08 1 xff09 线性时间选择问题 给定线性序集中n个元素和一个整数k xff0c 1 lt 61 k lt 61 n 要求找出这n个元素中第k小的元素 xff0c 即如果将这个n个元素
  • 我的 IDEA 常用插件介绍

    本文同步发表于我的微信公众号 xff0c 在微信搜索 及格 即可关注 这篇文章介绍一下我 IDEA 里安装的插件 我的 IDEA 版本是IntelliJ IDEA 2021 3 3 xff0c 并且打上了官方的汉化包 xff0c 但我假设看
  • 在电脑上配置 protobuf + VS Code 开发环境

    工作需要学习 protobuf 开发 xff0c 如果能在 Windows 环境下使用更便于练习 xff0c 于是这篇文章介绍一下如何在 Windows 下借助 VS Code 配置 protobuf 开发环境 Protobuf 介绍 pr
  • 【CMake】gtest环境搭建与TDD入门(二)

    上一篇文章 xff0c 我们介绍了CMake xff1a 传送门 这一篇文章我暂时不打算继续写CMake相关的东西了 xff0c 转而写一个叫TDD的开发理论 xff0c 当然 xff0c 理论是需要实践支撑的 xff0c 利用CMake

随机推荐