首页 > 解决方案 > 正则表达式:拆分字符串时如何保留所有数字?

问题描述

问题

使用正则表达式,拆分字符串时如何保留所有数字?

概述

我想将字符向量中的每个元素拆分sample.text为两个元素:仅数字之一和仅文本之一。

当前尝试正在删除最后一位

这个正则表达式 - \\d\\s{1}- inside ofbase::strsplit()删除了最后一个数字。下面是我的尝试,以及我想要的输出。

# load necessary data -----
sample.text <-
  c("111110 Soybean Farming", "0116 Soybeans")

# split string by digit and one space pattern ------
strsplit(sample.text, split = "\\d\\s{1}")
# [[1]]
# [1] "11111"           "Soybean Farming"
# 
# [[2]]
# [1] "011"      "Soybeans"

# desired output --------
# [[1]]
# [1] "111110"           "Soybean Farming"
# 
# [[2]]
# [1] "0116"      "Soybeans"

# end of script #

任何关于如何拆分sample.text以保留所有数字的建议将不胜感激!谢谢你。

标签: rregextextsplitstrsplit

解决方案


因为您要拆分,所以在正则表达式中消耗\\d了数字,而不是在输出中。使用lookbehind代替数字:

strsplit(sample.text, split = "(?<=\\d) ", perl=TRUE)

http://rextester.com/GDVFU71820


推荐阅读