说,如果我有这样一个字符串:
03:30-12:20, 12:30-15:0015:30-18:00
我需要将它们分成一个数组:
03:30
12:20
12:30
15:00
15:30
18:00
有人可以建议我应该使用什么样的正则表达式和R函数吗? 谢谢!
答案 0 :(得分:2)
尝试:
regmatches(string, gregexpr('\\d\\d:\\d\\d', string))
[[1]]
[1] "03:30" "12:20" "12:30" "15:00" "15:30" "18:00"
请注意,冒号总是被四位数包围。我们用特殊的正则表达式字符\\d
重复该模式,这意味着数字。在另一个答案中使用[0-9]
,如果不是更好的高级正则表达式标记操作,则同样好。我使用\\d
显示了达到同一目标的其他途径。
您还可以指定与花括号匹配的位数。在这种情况下,我们正在寻找冒号周围的2位数,
regmatches(string, gregexpr('\\d{2}:\\d{2}', string))
[[1]]
[1] "03:30" "12:20" "12:30" "15:00" "15:30" "18:00"
答案 1 :(得分:2)
我在qdapRegex包中仅为此提供了一个正则表达式。
library(qdapRegex)
x <- '03:30-12:20, 12:30-15:0015:30-18:00'
rm_time(x, extract=T)[[1]]
# [1] "03:30" "12:20" "12:30" "15:00" "15:30" "18:00"
答案 2 :(得分:1)
regmatches(input,gregexpr('\\d{2}:\\d{2}',input))
OR
strsplit(gsub("(\\d{2})(?=\\d{2})","\\1 ,\\2",input,perl=T),',|-')