全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
7933 8
2017-06-20
悬赏 10 个论坛币 未解决



请问怎么限制正则表达式数字提取的位数,比如说只提取六位数

比如 c<-c('啊1234567','12345678','123','123456','啊123456','a123456b','.123456')
我只想提取6位数,超过六位数的不匹配

pattern<-'[^0-9]([0-9]{6})[^0-9]' 会遗漏一些

请教大神有没有什么好的解决方法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-6-20 13:14:19
告诉你一种解决问题的思路,你可以把非数字去除掉,然后查看6位数的,就是你要提取的内容了:
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-20 14:08:45
jiangbeilu 发表于 2017-6-20 13:14
告诉你一种解决问题的思路,你可以把非数字去除掉,然后查看6位数的,就是你要提取的内容了:
我现在的想法是 pattern<-'([^0-9]|^)([0-9]{6})([^0-9]|$)' ,这样可以把6位数判断正确,但是想提取6位数的话,会带出不需要的信息,比如前文的例子,gregexpr会得到:'啊123456','a123456b','.123456' ,所以提取有一点点问题

想知道R 有没有word boundary这样的正则表达式,可以解决这个问题
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-20 14:22:35
你的这个命令,真的"123456"就无法提取出来了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-20 14:32:46
jiangbeilu 发表于 2017-6-20 14:22
你的这个命令,真的"123456"就无法提取出来了
> c<-c('啊1234567','12345678','123','123456','啊123456','a123456b','.123456')
> pattern<-'([^0-9]|^)([0-9]{6})([^0-9]|$)'
> grep(pattern,c,value=T)
[1] "123456"   "啊123456" "a123456b" ".123456"

是可以的,R 结果如上,  就是把其他字符也一起抓出来了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-6-20 14:52:53
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群