正则表达式拆分任何不是数字的东西

标签 regex r string datetime split

我想在不是数字的任何东西上拆分字符串。在这种特殊情况下,字符串是从外部 .csv 文件读取的日期和时间,目前不是 as.POSIXct 格式。

理想情况下,我想使用 regex 拆分字符串,但如果有更简单的方法使用 date/ 将它们转换为六列数字time 函数也很有趣。

我已经成功地创建了一个 regex 将字符串分成六列,但是这个 regex 并不通用。

数据如下:

my.data <- read.csv(text = '
          Date_Time
    18/05/2011 07:32:40
    19/05/2011 13:26:02
    19/05/2011 13:32:47
    19/05/2011 13:45:24
    19/05/2011 14:57:27
    19/05/2011 15:03:18
', header=TRUE, stringsAsFactors = FALSE, na.strings = 'NA', strip.white = TRUE)

下面是一个 regex 语句,它将字符串分成六列:

my.date.time <- data.frame(do.call(rbind, strsplit(my.data$Date_Time,"[/|:|[:space:]]+") ))

以上说法并不笼统。以下是通过对非数字的任何内容指定拆分来使 regex 通用的不成功尝试:

data.frame(do.call(rbind, strsplit(my.data$Date_Time,"[^\\d]+") ))

在我将字符串分成六列之后,我仍然需要一些看似过多的语句来将列转换为数字格式:

colnames(my.date.time) <- c('my.day', 'my.month', 'my.year', 'my.hour', 'my.minute', 'my.second')

revised.data <- data.frame(my.data, my.date.time, stringsAsFactors = FALSE)

revised.data$my.day    <- as.numeric(as.character(revised.data$my.day))
revised.data$my.month  <- as.numeric(as.character(revised.data$my.month))
revised.data$my.year   <- as.numeric(as.character(revised.data$my.year))
revised.data$my.hour   <- as.numeric(as.character(revised.data$my.hour))
revised.data$my.minute <- as.numeric(as.character(revised.data$my.minute))
revised.data$my.second <- as.numeric(as.character(revised.data$my.second))
revised.data

str(revised.data)

感谢您在概括上述 regex(或使用 date/time 函数简化过程)方面提供的任何帮助。 apply 函数可能可以消除大部分 as.numeric(as.character) 语句,尽管这是一个相对较小的问题。

最佳答案

试试\\D+

> x <- "18/05/2011 07:32:40"
> strsplit(x, "\\D+")
[[1]]
[1] "18"   "05"   "2011" "07"   "32"   "40" 

> strsplit(x, "[^0-9]+")
[[1]]
[1] "18"   "05"   "2011" "07"   "32"   "40" 

关于正则表达式拆分任何不是数字的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457914/

相关文章:

r - 曲线的下界

r - 选择至少具有某一特定值之一的组

c# - 检查字符串的语法 - C#

.net - 使用正则表达式将字符串映射到功能

javascript - 用于验证最后一位数字的正则表达式

Java Pattern 不匹配 RegEx

regex - 替换csv中的错误行

r - 在 ggplot2 中绘制白天(无日期)

c# - FormatException - 输入字符串的格式不正确

java - 在标记内转换括号和嵌套括号的正则表达式