【发布时间】:2021-02-19 21:29:36
【问题描述】:
我正在尝试用一个空格替换数据集中每一行中的模式。
模式是: MM/DD/YYYY ##:##:## 人名 (PNAME)
每一行都是一个字符串,如:
[1] 之前的文本... 04/17/2014 08:46:42 John Doe (JDOE) ...之后的文本
期望的结果:
[1] 之前的文字... ...之后的文字
我尝试了以下(以及许多变体):
pattern <- "[[0-9]][[0-9]][[:punct:]][[0-9]][[0-9]][[:punct:]][[0-9]][[0-9]][[0-9]][[0-9]][[:space:]][[0-9]][[0-9]][[:punct:]][[0-9]][[0-9]][[:punct:]][[0-9]][[0-9]][[:space:]][[:alpha::]][[:space:]][[:alpha::]][[:punct:]][[:alpha::]][[:punct:]]) "
replacement <- " "
sub(pattern, replacement, data$Description)
看来我没有正确设置模式。我在这里阅读了一些数字或正则表达式问题,但没有一个使用尝试替换多个字符/单词的模式。你会怎么写?
【问题讨论】:
-
您在
0-9周围添加了额外的括号,使用[0-9]匹配单个数字 -
试试
gsub("\\s+\\d{1,2}/\\d{1,2}/\\d{4}\\s+\\d{1,2}:\\d{1,2}:\\d{1,2}\\s+\\w+\\s+\\w+\\s+\\([^()]*\\)", "", data$Description),见regex demo。 -
@WiktorStribiżew 做到了!!!谢谢!