gpt4 book ai didi

正则表达式删除特定字符前的所有数字(在 R 中工作)

转载 作者:行者123 更新时间:2023-12-04 13:18:06 25 4
gpt4 key购买 nike

我正在寻找正则表达式来删除第一次出现下划线 (_) 之前的所有数字。

这是我要修改的字符串的示例 -

"123-abc-123_abc-123_abc_123_abc"

这是期望的结果 -

"-abc-_abc-123_abc_123_abc"

我已经尝试了很多东西。积极的前瞻似乎会奏效。例如我试过这个 -

str_replace_all("123-abc-123_abc-123_abc_123_abc", "[0-9]*(?=.*_)", "")

但这匹配所有前面有下划线的数字,而不仅仅是下划线第一个实例之前的数字。

最佳答案

你可以使用

x <- "123-abc-123_abc-123_abc_123_abc"
gsub("\\G([^_\\d]*)\\d", "\\1", x, perl=TRUE)

参见 regex demo .正则表达式匹配

  • \G - 字符串的开头或上一场比赛的结尾
  • ([^_\d]*) - 第 1 组(其值用替换模式中的 \1 占位符引用):任何 0+ 个字符比数字或 _
  • \d - 一个数字。

或者,使用

library(stringr)
x <- "123-abc-123_abc-123_abc_123_abc"
str_replace(x, "\\d[^_]*", function(m) { gsub("\\d", "", m) })
[1] "-abc-_abc-123_abc_123_abc"

\d[^_]* 模式将匹配一个数字和除 _ 之外的所有 0 个或多个字符,str_replace将只处理第一次出现的情况,用它的副本替换匹配项,通过 function(m) { gsub("\\d", "", m) }.

参见 R demo online

关于正则表达式删除特定字符前的所有数字(在 R 中工作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57732418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com