我有几个数据框,我想将特定的数据框合并到列表中以便于管理。
由于有很多数据框,我使用lapply()
来快速执行合并。
我的模式匹配(正则表达式)元素如下所示:
ls(pattern = "jan[0-9]")
返回:
[1] "jan0000" "jan0000_0059" "jan0100" "jan0100_0159" "jan0200" "jan0200_0259" "jan0300" "jan0300_0359" "jan0400" "jan0400_0459" "jan0500"
[12] "jan0500_0559" "jan0600" "jan0600_0659" "jan0700" "jan0700_0759" "jan0800" "jan0800_0859" "jan0900" "jan0900_0959" "jan1000" "jan1000_1059"
[23] "jan1100" "jan1100_1159" "jan1200" "jan1200_1259" "jan1300" "jan1300_1359" "jan1400" "jan1400_1459" "jan1500" "jan1500_1559" "jan1600"
[34] "jan1600_1659" "jan1700" "jan1700_1759" "jan1800" "jan1800_1859" "jan1900" "jan1900_1959" "jan2000" "jan2000_2059" "jan2100" "jan2100_2159"
[45] "jan2200" "jan2200_2259" "jan2300" "jan2300_2359"
然而,问题是我只想提取名称长度为12个字符的数据帧。
我尝试了很多东西,比如搜索一个确切的长度(我感兴趣的长度都是相同的长度):
ls(pattern = "jan[0-9]{12}")
但它返回:
character(0)
我认为另一种方法是搜索以jan
开头的任何内容,然后是四个数字,然后是下划线。问题是我似乎无法获得正则表达式返回任何结果。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
好像你可以使用
ls(pattern = "^jan[0-9]{4}_")
<强>详情
^
- 字符串开头jan
- 文字子字符串[0-9]{4}
- 任意四位ASCII数字_
- 下划线。请参阅regex demo。
如果你追加[0-9]{4}$
,你将进一步限制模式,要求4位数字和下划线右边的字符串结尾。请参阅another regex demo。