我try 清理一些文本,并想从字符串中删除以下文本

googletag.cmd.push(函数(){ googletag. show(' div-gpt-ad-1513202928332- 3 '); });

例如如果

x="123 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1513202928332-3'); }); 456"

然后

gsub("googletag.cmd.push(function() { googletag.display('div-gpt-ad-1513202928332-3'); });, ", x)

所需输出为[1] 123456

谢谢你

推荐答案

Regex方法

您可以使用以下模式.

x <- "123 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1513202928332-3'); }); 456"

gsub("^(\\d+).*?(\\d+)$", "\\1\\2", x)
# [1] "123456"

Explanation:

enter image description here

我们保留开头和结尾的数字组(组1和组2),并丢弃中间的所有内容.我们在两者之间使用非贪婪regex来确保捕获两组中的所有数字.

非regex方法

用一个例子来判断有点困难,但如果总是字符串开头和结尾的数字,那么就不需要regex了.您可以在空间上拆分并获取第一个和最后一个元素:

strsplit(x, " ", fixed = TRUE) |>
    sapply(\(m) paste0(head(m, 1), tail(m, 1)))
# [1] "123456"

R相关问答推荐

如何提高以键ID为列的表中键查找的效率?

如何将log 2刻度上的数字转换为自然log

有没有方法将paste 0功能与列表结合起来?

如何根据包含相同值的某些列获取总额

变量计算按R中的行更改

寻找图片边缘

terra nearest()仅为所有`to_id`列返回NA

R中的子集文件—读取文件名索引为4位数字序列,例如0001到4000,而不是1到4000)

迭代通过1个长度的字符串长字符R

未识别时区

汇总数据表中两个特定列条目的值

如果可能,将数字列转换为整数,否则保留为数字

悬崖三角洲超大型群数计算导致整数溢出

正则表达式在第二个管道和第二个T之后拆分R中的列

R中Gamma回归模型均方误差的两种计算方法不一致

按组跨多列创建伪变量

如何根据其他列中的两个条件来计算数据帧中的行之间的差异?

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?

为什么将负值向量提升到分数次方会得到NaN

在不重复主题的情况下重新排列组