无法使用“Regex::replace()”来替换编号的捕获组

2024-01-10

我正在将复数器移植到 Rust,但在使用正则表达式时遇到了一些困难。我无法获取Regex::replace()正如我所期望的那样,替换编号捕获组的方法。例如,以下显示空字符串:

let re = Regex::new("(m|l)ouse").unwrap();
println!("{}", re.replace("mouse", "$1ice"));

我希望它能打印“mice”,就像在 JavaScript(或 Swift、Python、C# 或 Go)中那样

var re = RegExp("(m|l)ouse")
console.log("mouse".replace(re, "$1ice"))

我应该使用某种方法来代替Regex::replace()?

检查偏转器板条箱 https://crates.io/crates/Inflector,我看到它提取第一个捕获组,然后将后缀附加到捕获的文本:

if let Some(c) = rule.captures(&non_plural_string) {
    if let Some(c) = c.get(1) {
        return format!("{}{}", c.as_str(), replace);
    }
}

然而,鉴于replace适用于我使用过正则表达式的所有其他语言,我希望它也适用于 Rust。


正如中提到的文档 https://docs.rs/regex/0.2.2/regex/struct.Regex.html#method.replace:

使用尽可能长的名称。例如。,$1a查找名为的捕获组1a而不是索引处的捕获组1。要对名称进行更精确的控制,请使用大括号,例如${1}a.

And

有时替换字符串需要使用花括号 描绘捕获组替换和周围的文字文本。 例如,如果我们想用一个单词将两个单词连接在一起 下划线:

let re = Regex::new(r"(?P<first>\w+)\s+(?P<second>\w+)").unwrap();
let result = re.replace("deep fried", "${first}_$second");
assert_eq!(result, "deep_fried");

没有花括号,捕获组名称first_将被使用, 由于它不存在,它将被替换为空 细绳。

你要re.replace("mouse", "${1}ice")

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

无法使用“Regex::replace()”来替换编号的捕获组 的相关文章

  • 如何使用 C# 查找文本中重复出现的词组? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在统计重复出现的字数字符串生成器 sb 我在互联网上找到了这段代码 据作者称 它与 Word 的字数计数器非常一致 StringB
  • Jquery 表单验证 - 电话号码

    我已经在表单上设置了 jQuery 验证 该验证当前测试电话号码字段不为空并且是一个数字 但我希望它能够处理用户在手机 区号后放置空格的情况 谁能建议我需要做什么才能允许这样做 这是我当前的代码 if phone length 0 name
  • Unicode、正则表达式和 PyPy

    我写了一个程序来添加 有限 统一码支持 https stackoverflow com q 1832893 520779到 Python 正则表达式 虽然它在 CPython 2 5 2 上工作正常 但在 PyPy 上不起作用 1 5 0
  • 用于验证网络路径的正则表达式 PHP、jQuery、JavaScript、Ruby

    尝试找出用于验证网络路径的正则表达式 即 comp xyz or comp or comp x y z storage或者所有部分都更长的东西 但希望能够传达其要点 我目前拥有的是一个简单的输入字段 用户可以通过它传递信息 事情是我不希望他
  • Python正则表达式检查字符串是否包含任何单词

    我想搜索一个字符串并查看它是否包含以下任何单词 AB AG AS Ltd KB University 我在 javascript 中工作 var str Hello test AB var forbiddenwords new RegExp
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 匹配没有周围字符列表的单词列表

    我有这个正则表达式 one common word or another 除非这两个单词相邻 否则它匹配得很好 One one s more word word common word or another word more anothe
  • 如何有条件地检查枚举是一种变体还是另一种变体?

    我有一个有两个变体的枚举 enum DatabaseType Memory RocksDB 为了在函数内创建条件 if 来检查参数是否为 我需要什么DatabaseType Memory or DatabaseType RocksDB fn
  • 转换为盒子

    我有一个Box
  • 使用带有字边界的 mgsub 函数作为替换值

    我试图用空格替换向量中字符串元素的子字符串 以下是我们正在考虑的向量 test lt c PALMA DE MALLORCA THE RICH AND THE POOR A CAMEL IN THE DESERT SANTANDER SL
  • django 尝试了这些 url 模式

    当我尝试访问我的站点时 它会给出以下信息 使用 mysite urls 中定义的 URLconf Django 按以下顺序尝试了这些 URL 模式 管理员 当前 URL 与其中任何一个都不匹配 如果我访问该网站并附加 admin 它会将我带
  • Javascript拆分正则表达式问题

    你好 我正在尝试我认为在 Javascript 中相当简单的正则表达式 但给我带来了很多麻烦 我希望能够通过 javascript 通过 和 分割日期 var date 02 25 2010 var myregexp2 new RegExp
  • PHP:如何使用 nl2br() 和 HTML Purifier 保持换行?

    Issue 使用时HTML 净化器 http htmlpurifier org 为了处理用户输入的内容 换行符不会被转换为 br tags 考虑以下用户输入的内容 Lorem ipsum dolor sit amet This is ano
  • 颠倒句子中的“英语”单词

    我有一个字符串 其中可能使用多种语言 例如 and this is in English this is going to be continued 我只想反转英语单词 所以结果应该是这样的 English in is this and c
  • 两边带有感叹号的正则表达式 ('!\d!')

    我见过正则表达式 d PHP 内部preg match功能 这到底是什么 来自PHP PCRE 文档 http php net manual en regexp reference delimiters php 使用 PCRE 函数时 要求
  • 如何替换字符串中除第一次出现之外的所有模式

    快速问题 我的模式是一个 svg 字符串 它看起来像l 5 0 l 0 10 l 5 0 l 0 10要与参考进行一些单元测试比较 我需要放弃除第一个之外的所有内容l我知道我可以放弃它们并在前面放置一个 l 或者我可以使用子字符串 但我想知
  • 匹配可能存在或可能不存在的组

    我的正则表达式需要解析一个如下所示的地址 BLOOKKOKATU 20 A 773 00810 HELSINKI SUOMI 1 2 3 4 第一组 第二组和第三组将始终存在于地址中 第 4 组可能不存在 我编写了一个正则表达式来帮助我获得
  • 如何在 Rust winapi 编程中使用 COM VARIANT?

    我正在尝试转换C COM 代码 https technet microsoft com pt br aa382113 v vs 71 for TaskSchedulerRust 并坚持VARIANT的论证ITaskService Conne
  • 如何使用 re2 正则表达式否定字符串模式?

    我正在使用谷歌re2 https github com google re2 wiki Syntax用于查询目的的正则表达式普罗米修斯 https prometheus io docs prometheus latest querying
  • 反序列化之前从 JSON 中删除奇怪的隐藏字符

    我有一些 JSON 发送给我 当它尝试反序列化时会中断 它似乎含有一颗黑色钻石 上面有 在里面 我看不到该角色 但它显然在那里 但在我的系统上失败了 如何摆脱这个问题并保持 JSON 完整以进行反序列化 UPDATE 以下是 JSON 中间

随机推荐

  • JSON结果转字符串

    我有一个JsonResult工作正常 并从一些 POCO 返回 JSON 我想将 JSON 作为字符串保存在数据库中 public JsonResult GetJSON JsonResult json new JsonResult Data
  • Eclipse 如何在 Linux 中找到 JDK?

    我已经手动安装了Eclipse和jdk 我的 JAVA HOME 已设置 我可以运行java版本 and javac 版本命令 但是当我尝试运行 Eclipse 时 它 显示以下消息 A Java Runtime Environment J
  • 使用“输入”事件动态更改背景颜色

    我正在尝试使用 JavaScript 动态更改背景 使用事件监听器监听输入类型 颜色 字段上的 输入 当我从调色板中选择颜色后单击颜色输入字段时 背景颜色会正确更改 但是 我希望背景在用户滚动托盘时动态变化 而不仅仅是在他选择最终颜色时 希
  • 包含嵌入/发布的 Google 文档的 Iframe 的自动高度

    我有一个带有已发布的 Google 文档的 iframe 该文档的内容可能会发生变化 因此我想根据其内容自动调整 iframe 的高度 我找到了一些解决方案 但它们都需要访问子文档的头部 有谁知道如何做到这一点 您可以查看下面我使用的代码的
  • 在 Eclipse 中使用三星 Galaxy 5 作为设备

    我无法在 Eclipse 中使用我的 Samsung Galaxy 5 例如 将 s5 连接到我的计算机时 我无法调试我的应用程序 我在 设备 中看到该设备 但其未知或处于离线状态 我已经在开发者选项中激活了调试模式 它适用于三星 Gala
  • 用于修复损坏的序列化 PHP 数据的正则表达式/代码。

    我有一个巨大的多维数组 已由 PHP 序列化 它已存储在MySQL中 数据字段不够大 末尾已被切断 我需要提取数据 unserialize行不通 有人知道可以关闭所有数组的代码 重新计算字符串长度 手动处理的数据太多了 非常感谢 这是重新计
  • 附加到 asp.net 母版页中的默认标题

    我正在使用 MVC 将标题添加到带有内容占位符的母版页 默认的MVC母版页模板使用以下代码 当我尝试将默认文本添加到内容容器的前面时 它不会在最终呈现的页面中显示文本 我试图让页面显示带有附加 contentp
  • Jquery 滚动到具有相同类的下一个/上一个 div

    我有几个 div 都具有相同的类 帖子 并且我有一个简单的向上和向下导航
  • Python浮点精度和

    我在 python 中有以下数组 n 565387674 45 321772103 48 321772103 48 214514735 66 214514735 65 357524559 41 如果我将所有这些元素相加 我会得到 sum n
  • 使用shutil移动文件时出错

    我正在尝试创建一个简单的函数 查找以某个字符串开头的文件 然后将它们移动到新目录 但我不断从shutil IOError Errno 2 没有这样的文件或目录 18 1 pdf 即使该文件存在 import os import shutil
  • 组件中未定义渲染函数或模板:匿名

    我遇到这样的问题 重新加载页面后出现错误 组件中未定义渲染函数或模板 匿名 我认为该错误是由于 socket io 造成的 这个错误不是发生在本地机器上 而是发生在生产上 这是怎么回事 开发者 https dev jujuway com u
  • 如何在Python中编写字符串文字而不必转义它们?

    有没有一种方法可以在Python中声明一个字符串变量 这样它里面的所有内容都会自动转义 或者有它的文字字符值 I m not询问如何用斜杠转义引号 这是显而易见的 我要求的是一种通用的方法 用于将所有内容都放入字符串文字中 这样我就不必手动
  • 在查询中使用 TOP 1 时出现问题

    我编写了以下查询来获取日期 删除它的时间部分并添加我想要的时间 如果我在没有 TOP 子句的情况下运行此查询 则效果很好 但是当我添加它时 它返回以下异常 从字符串转换日期和 或时间时转换失败 这是查询 SELECT TOP 1 CONVE
  • C# List .ConvertAll 效率和开销

    我最近了解了 List 的 ConvertAll 扩展 我今天在工作中在代码中使用了几次它 将我的大量对象列表转换为其他对象的列表 看起来效果真的很好 但是 我不确定与仅迭代列表和转换对象相比 这有多高效或多快 ConvertAll 是否使
  • Android 应用内计费、非消耗品

    我正在实施应用内计费 用户将能够购买优质内容的访问权限 这是典型的非消耗品 假设优质内容是问题应用程序中的额外问题或类别 我用过this http www techotopia com index php Integrating Googl
  • 如何设置UILabel发光效果的颜色?

    我们通常可以设置fontColorUILabel 的实现方式 label textColor self someTextColor 和阴影 发光 label layer shadowColor self someGlowColor labe
  • 如何在shell脚本中调用函数?

    我有一个有条件调用函数的 shell 脚本 例如 if choice true then process install elif choice false then process exit fi process install comm
  • 通过句子或段落训练和评估 spaCy 模型

    观察 段落 I love apple I eat one banana a day句子 I love apple I eat one banana a day这一段有两句话 I love apple and I eat one banana
  • 无法添加实体类型“X”的种子实体,因为没有为所需属性“..ID”提供值

    我在玩机智EF Core 2 1 预览 2 我在使用 HasData Seed 方法时遇到问题OnModelCreating ModelBuilder modelBuilder 我的模型是简单的 POCO 类 没有注释 public cla
  • 无法使用“Regex::replace()”来替换编号的捕获组

    我正在将复数器移植到 Rust 但在使用正则表达式时遇到了一些困难 我无法获取Regex replace 正如我所期望的那样 替换编号捕获组的方法 例如 以下显示空字符串 let re Regex new m l ouse unwrap p