我可以替换 Java 正则表达式中的组吗?

2023-11-27

我有这段代码,我想知道是否可以仅替换 Java 正则表达式中的组(而不是所有模式)。 代码:

 //...
 Pattern p = Pattern.compile("(\\d).*(\\d)");
    String input = "6 example input 4";
    Matcher m = p.matcher(input);
    if (m.find()) {

        //Now I want replace group one ( (\\d) ) with number 
       //and group two (too (\\d) ) with 1, but I don't know how.

    }

Use $n(其中 n 是数字)引用捕获的子序列replaceFirst(...)。我假设您想用文字字符串替换第一组"number"第二组具有第一组的值。

Pattern p = Pattern.compile("(\\d)(.*)(\\d)");
String input = "6 example input 4";
Matcher m = p.matcher(input);
if (m.find()) {
    // replace first number with "number" and second number with the first
    // the added group ("(.*)" which is $2) captures unmodified text to include it in the result
    String output = m.replaceFirst("number$2$1"); // "number example input 6"
}

考虑(\D+)对于第二组而不是(.*). *是一个贪婪的匹配器,并且首先会消耗最后一位数字。当匹配器实现最终结果时,它必须回溯(\d)在匹配到最后一位数字之前,没有任何可匹配的内容。

Edit

多年后,这个问题仍然得到投票,评论和编辑(打破了答案)表明,人们对这个问题的含义仍然存在困惑。我已经修复了它,并添加了急需的示例输出。

对替换的编辑(有些人认为$2不应该使用)实际上打破了答案。尽管持续的投票表明答案击中了关键点 - 使用$n内的参考文献replaceFirst(...)重用捕获的值 - 编辑丢失了这样一个事实:未修改的文本也需要被捕获,并在替换中使用,以便“仅组(并非所有模式)".

这个问题以及这个答案与迭代无关。这是故意的MRE.

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

我可以替换 Java 正则表达式中的组吗? 的相关文章

  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 正则表达式匹配bash变量

    我正在尝试修改 bash 脚本 当前脚本包含 print div class 1 div Where 1可能看起来像 Apprentice Historian Level 1 Historian Level 4 Master Histori
  • 将 MOXy 设置为 JAXB 提供程序,而在同一包中没有属性文件

    我正在尝试使用 MOXy 作为我的 JAXB 提供程序 以便将内容编组 解组到 XML JSON 中 我创建了 jaxb properties 文件 内容如下 javax xml bind context factory org eclip
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • Android xml 文件突然显示 java 代码。 [复制]

    这个问题在这里已经有答案了 我昨晚刚刚更改了 build gradle 文件调试部分中的基本 url 因为我的基本 url 已更改 一切都很好 直到今天我启动我的电脑和 android studio 并看到我所有的 xml 文件都有 jav
  • Firebase Cloud Firestore 触发器 context.auth 始终为 null [重复]

    这个问题在这里已经有答案了 我正在使用 Firebase 和 Cloud Firestore 构建一个群组应用程序 用户应该能够在其中创建群组并向其中添加成员 当用户创建组时 我希望云触发器在创建组后将该用户添加到组的成员列表中 触发器看起
  • Android 支持的语言/区域设置列表是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道如何为不同语言的文件夹命名 在哪里可以找到 Android 支持的语言列表 自 Android 5 1 起更新的列表 af Afrikaan
  • 无法更改 pty/N 上的终端大小(适用于 ttyN)

    我使用 next 来更改终端大小 rc ioctl fd TIOCSWINSZ ws 当我在 Linux 文本终端下运行这个 通过 Alt Ctrl F1 切换 时 结果是我期望看到的 我的整个输入和输出都在 ioctl 系统调用给出的范围
  • 如何将导航抽屉放在工具栏下方?

    我的导航抽屉位于工具栏上方 我还添加了一些 xml 代码 请帮助我 这是我的 Activity xml
  • 替换 BLOB 列中的文本

    在我们的一张桌子上有一个HUGEBLOB列 列名称是DYNAMIC DATA 其中包含 XML 数据 我需要做的是更新此 BLOB 中文本的特定部分 我尝试过这个查询 UPDATE ape1 item version SET DYNAMIC
  • 为什么 NetBeans 在 OS X 上运行我的程序,但不将其构建到 JAR 中?

    tl dr 我缺少什么依赖项 允许 NetBeans 在内部正常运行 OS X 集成程序 但无法清理并将其构建为 JAR 我正在尝试制作一个集成到 OS X 中的 Java 程序 但我希望也将其发布到 Windows 和 Linux 上 为
  • 如何从 Maven Reactor 构建中排除模块?

    我们有一个 Maven 2 项目 其中有很多模块 例子
  • 任务“:app:validateSigningRelease”执行失败。颤振误差

    我想发布我的应用程序 但遇到了这个问题 FAILURE Build failed with an exception What went wrong Execution failed for task app validateSigning
  • NSPredicate 未执行

    这很有趣 在我的应用程序中 我在数据库中创建了数千个条目 在另一个线程中 我使用 MagicalRecord 一切似乎都工作正常 从背景 前景 上下文的角度来看 当我在主线程中尝试获取 刚刚插入 的数据时 我发现了以下行为 NSArray
  • 从 edittext 中选定的文本中删除样式

    我的应用程序应该允许用户在 Edittext 中设置输入或选定文本的样式 其中一些样式有下划线 删除线 粗体和斜体 它们很容易添加 但我不知道如何将它们移除 and 我如何确定该样式是否已添加到选定的文本 添加样式的代码 Spannable
  • 内置赋值运算符的返回类型是什么?

    我刚刚开始 C 我对赋值和取消引用运算符的返回类型有点困惑 我正在关注 C Primer 这本书 在各种场合 作者都说赋值运算符的返回类型是对左手操作数类型的引用 但后来 他说返回类型是左手操作数的类型 我已经提到了 C 11 Standa
  • PHP-获取数组值的键名

    我有一个数组如下 function example some stuff here that pushes items with dynamically created key strings into an array return ar
  • 最佳实践:Android 上的布局(编程与 XML)

    这个问题已经困扰我一段时间了 我已经在 Android 平台上开发了几个应用程序 并且总是发现自己求助于 Java 代码来构建布局 在专业的开发环境中 这是可以接受的吗 或者 XML 文件应该成为首选方法 我通常发现 XML 是一种更乏味的
  • 如何在同一个 Ruby Rails 项目中配置 MongoMapper 和 ActiveRecord

    我有一个现有的生产 Ruby Rails 应用程序 我希望在时间允许的情况下将其迁移到 MongoDB 因为不能一次性全部重写 我希望能够在我接触到旧课程时就弃用它们 我打算使用 MongoMapper 我找不到任何人解释如何设置数据库配置
  • com.firebase.client.FirebaseException:无法解析类为 CLASS_NAME android 的节点

    我在使用 Firebase 更新现有值时遇到以下异常updateChildren方法 com firebase client FirebaseException Failed to parse node with class class c
  • 如何开始使用 Java 构建 Web 应用程序? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想开始使用 java 进行 Web 开发 不知道如何开始 该学什么 或者什么是最好学习和使用的 Web 框架 帮帮我 我假设您只是 Web 应用程序的新手 而不是 Java 本
  • 超类中的私有方法可以在子类中重写吗?

    Java中私有方法可以被重写吗 如果不是 那么下面的代码如何工作 class Base private void func System out println In Base Class func method class Derived
  • 如何解决UITableView滚动缓慢的问题

    我是第一次在真实设备上进行测试 在修复了一些明显的性能问题后 我陷入了如何平滑滚动的困境 这就是我所做的 数据在sqlite中 我有一个带有标题的小数组 我在每个标头数组中都有来自数据库的 Id 列表 e g 标头 A Id 1 2 标头
  • 我可以替换 Java 正则表达式中的组吗?

    我有这段代码 我想知道是否可以仅替换 Java 正则表达式中的组 而不是所有模式 代码 Pattern p Pattern compile d d String input 6 example input 4 Matcher m p mat