【发布时间】:2017-09-01 14:05:20
【问题描述】:
我正在寻找 R 中的正则表达式来替换 2 个字母字符之间的数字。例如,将3 替换为m,如下所示:
Sa3ple变为Sample-
Sample1.3保持Sample1.3- 这个词的状态相同,因为 3 不在字母字符之间
我尝试使用以下 R 代码将 3 替换为 m,但它只是部分工作。
一个问题是,如果正则表达式匹配,而不是替换匹配的行,每次它都替换来自col3 的第一行。不确定,到底缺少什么。
df$col3[grep('[a-zA-Z][3][a-zA-Z]|[3][a-zA-Z]',df$col3)] <- gsub('[3]+', 'm', df$col3)
【问题讨论】:
-
请做最少的研究——这里没有很好地接受纯代码编写请求。见Reference - What does this regex mean
-
我可以给你写代码,但这会告诉你,我们只会给你答案,而不需要你证明已经尝试过任何东西。相反,我将向您提供完成此任务所需的所有信息。
(启动一个捕获组,而)关闭它(语法是(...),其中省略号显然被替换为您想要捕获的 something)。\w匹配任何 word 字符,\d匹配任何 digit。+是一个量词,指定匹配应包括 1 到无限制的前一个字符选择。 -
继续我之前的评论,在正则表达式替换
$后跟一个数字指向捕获组。因此,如果您有一个捕获组(...),$1将指向捕获的内容。如果您尝试编写一些正则表达式并更新您的问题,那么您更有可能得到正确的回答,因为这表明您尝试了一些事情。毕竟,我们为什么要尝试帮助连自己都不会尝试的人呢?出示试错证明,您就会得到答案。