用于保留大小写模式、大小写的正则表达式

2024-01-17

主要问题:

是否有一个正则表达式可以保留案例模式\U and \L?
理想情况下,它也会尊重单词边界和锚点。

Example

假设我们有大量文本,我们想要将一个单词转换为另一个单词,同时保留单词的大小写。 例如,替换所有实例"date" with "month"

 Input: `"This Date is a DATE that is daTe and date."`
Output: `"This Month is a MONTH that is moNth and month."`
 input     output
------     -------
"date" ~~> "month"
"Date" ~~> "Month"
"DATE" ~~> "MONTH"
"daTe" ~~> "moNth"   ## This example might be asking for too much.

保留单词边界

我对保留单词边界的解决方案感兴趣(即只能匹配“整个单词”)。在给定的示例中,"date"会改变,但不会改变"dated"


现有的解决方法R:

我目前使用三个嵌套调用sub来实现这一目标。

input <- c("date", "Date", "DATE")
expected.out <- c("month", "Month", "MONTH")

sub("date", "month", 
  sub("Date", "Month", 
    sub("DATE", "MONTH", input)
  )
)

目标是拥有一个单一的pattern和一个单一的replace such as

gsub("(date)", "\\Umonth", input, perl=TRUE) 

这将产生所需的输出


注释(2023 年更新)

  1. 问题背后的动机是扩展有关以下人员能力的知识:RegEx。下面的示例仅作为说明之用。此问题的目的不是寻找替代解决方法。
  2. 这个问题是由R标签,但会接受调用风味的答案RegEx目前不可用R

这是我认为for循环是合理的:

input <- rep("Here are a date, a Date, and a DATE",2)
pat <- c("date", "Date", "DATE")
ret <- c("month", "Month", "MONTH")

for(i in seq_along(pat)) { input <- gsub(pat[i],ret[i],input) }
input
#[1] "Here are a month, a Month, and a MONTH" 
#[2] "Here are a month, a Month, and a MONTH"

另一种礼貌是@flodel实现与循环相同的逻辑Reduce:

Reduce(function(str, args) gsub(args[1], args[2], str), 
       Map(c, pat, ret), init = input)

有关这些选项的一些基准测试,请参阅@TylerRinker 的答案。

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

用于保留大小写模式、大小写的正则表达式 的相关文章

  • 将文本拆分为句子[重复]

    这个问题在这里已经有答案了 我希望将文本分成句子 谁能帮我 我还需要处理缩写 然而 我的计划是在早期阶段更换它们 先生 gt 先生 import re import unittest class Sentences def init sel
  • Java 文件扩展名正则表达式

    我试图提出一个 Java 正则表达式 只有当文件名具有有效的扩展名时 它才会匹配文件名 例如 它应该匹配 foo bar 和 foo b 但都不匹配 foo 也不是 foo 我编写了以下测试程序 public static void mai
  • 如何有效地将多个 rgl 图连接成一个图?

    我用以下命令制作了 3D 绘图rgl打包我的数据的每个因子级别并将它们保存为 png 我的数据有 30 个不同的级别 从而产生了 30 个不同的图像文件 现在我想将这些 png 合并成一个图 我会这样显示它们 下面的例子说明了我想做的事情
  • 在 R 中,如何将整个命令行放入二元运算符的 sys.call() 中?

    我为 R 编写了一个二元运算符函数 即名称类似于 X 这样就不必输入 X a b 我可以使用更方便的语法a X b 我的目标是有一个包装器 lt 它会执行一些操作 例如记录对该环境中的对象所做的操作并检查 受保护 属性 该属性会在覆盖该对象
  • r 选择数据框中某个值以下和之后的值

    我有一个问题如何从表中选择某些值 我有一个包含时间和值的表 我想在特定时间之后获取下面的行 示例 Data Frame Time Value 02 51 0 08033405 05 30 0 43456738 09 45 0 3605207
  • 正则表达式需要 10 位数字而不考虑空格

    我需要一个正则表达式将数字限制为 10 即使有空格也是如此 例如它允许06 15 20 47 23与0615204723 我试过 d 10 但是如何忽略空格 另外 数字应该以06 or 07 编者注 最后一个要求来自OP的评论 这将在大多数
  • 在 R 中使用 k-NN 和分类值

    我希望对主要具有分类特征的数据进行分类 为此 欧几里得距离 或任何其他数值假设距离 不适合 我正在寻找 R 的 kNN 实现 其中可以选择不同的距离方法 例如汉明距离 有没有一种方法可以使用常见的 kNN 实现 例如具有不同距离度量函数的
  • 测试 PCA 图上簇的显着性

    是否可以在 PCA 图上测试 2 个已知组之间聚类的显着性 测试它们的接近程度或分布量 方差 以及簇之间的重叠量等 这是一种定性方法 使用ggplot 在簇周围绘制 95 置信椭圆 注意stat ellipse 使用二元 t 分布 libr
  • 如何在 R 中建立具有某些条件的排列[重复]

    这个问题在这里已经有答案了 我是 R 新手 有点困惑 假设我有一个向量 c 1 2 3 4 5 6 我想生成具有四个元素的排列 每个排列应涉及 1 和 5 谢谢 您可以使用permutations https www rdocumentat
  • htaccess 中的重写规则以匹配某些文件扩展名

    如何查找某些文件扩展名的实例 例如 jpg png css js php 如果没有匹配项 则将其发送到 index php route 1 我希望能够允许自定义用户名使用句点 所以 重写http example com my name ht
  • 将不规则时间序列拆分为规则月平均值 - R

    为了确定季节性对能源使用的影响 我需要将计费数据库中的能源使用信息与每月温度进行调整 我正在使用一个计费数据集 其中包含不同长度以及开始日期和结束日期的账单 并且我希望获得每个月内每个帐户的月平均值 例如 我有一个计费数据库 具有以下特征
  • R 将向量重塑为多列

    假设我在 R 中有一个向量 如下所示 d lt seq 1 100 我想将这个向量重塑为 10x10 矩阵 这样我就可以得到以下数据 1 2 3 10 1 2 3 10 11 12 13 20 21 22 23 30 91 92 93 10
  • R ggplot2 比例 alpha 离散以显示在图例中

    我正在尝试绘制两个因素 压力和性别 的图 并使用 alpha 值来传达性别 这是我的代码和结果图 ggplot subset df zfish data overall long day day 01 measure distance fr
  • 带有 rename_with 的 Purrr 地图

    我正在尝试清理数据集的名称 我用过janitor clean names 开始 但是 我仍然有缩写想用下划线分隔开 我有可以使用的代码rename with str replace x gh gh cols starts with gh 但
  • 如何在 ggplot2 图中有两个源标题? [复制]

    这个问题在这里已经有答案了 我正在尝试在 ggplot2 图中添加第二个标题 与这位经济学家制作此图的方式类似 这是我制作的一个基本图 我知道如何在右下角添加一个标题 但如何在左下角添加另一个标题 ggplot mtcars aes mpg
  • R - 按列比较两行并将结果写入表中

    我是 R 新手 可能我的问题的解决方案非常简单 但目前我无法实现 我想按列比较数据框中的行 每列中的数据是一个字母 核苷酸碱基 seq1 A C T G T seq2 A C G G G seq3 A G G C A 我想按列比较数据集中的
  • 通过 rpy2 将 numpy 数组传递给 R 时出现不一致数组

    我正在尝试将 numpy 数组传递到 R 中的 GAMLSS 包 import numpy as np import rpy2 robjects as robjects from rpy2 robjects import numpy2ri
  • 如何强制geom_point在R中显示比例大小?

    我的数据如下 抱歉有点大 test dput 我还有一个绘制这些数据的代码 这里的问题是它没有给我比例大小read counts value多变的 我怎样才能解决这个问题 谢谢 my code p ggplot test dput aes
  • 如何在 bookdown 定理或示例环境中使用内联 R 代码

    我使用 bookdown 生成 html 和 PDF 文档 如何在定理和示例环境中使用内联 R 代码的结果 这是我尝试过的 title Test output bookdown pdf book toc false html documen
  • 连接极线ggplot图中的间隙

    当 ggplot 使用极坐标绘制线图时 它会在最高和最低 x 值之间留下间隙 Dec and Jan如下 而不是缠绕成螺旋状 我怎样才能继续这条线并缩小差距 特别是 我想使用月份作为 x 轴 但在一条循环线上绘制多年的数据 Reprex l

随机推荐