楼主: zerofung
997 1

[问答] 如何抓取符合正则表达的字符里的某些字符 [推广有奖]

  • 0关注
  • 3粉丝

已卖:1份资源

博士生

98%

还不是VIP/贵宾

-

威望
0
论坛币
2449 个
通用积分
264.0582
学术水平
40 点
热心指数
52 点
信用等级
26 点
经验
5016 点
帖子
193
精华
0
在线时间
573 小时
注册时间
2016-3-3
最后登录
2025-2-10

楼主
zerofung 学生认证  发表于 2016-8-2 12:27:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
简短地问,想要抓取的字符串前后满足一定的正则,但其本身并没有特殊规律,应如何实现?
具体:
例如一堆字符串:
a<-c("http://asdfghjk.com","asdfhttp://asdf.com","qwerhttp://poiu.org","dfasdfhttp://qwer.comqwer")

利用下面谷歌找到的代码
GetContent <- function(list,pattern){
  d <- c()
  for (i in 1:length(list)) {
    g <- gregexpr(pattern,list)[[1]]
    d <- append(d,substring(list,g,g+attr(g,'match.length')-1))
  }
  d
}


pattern <- "http://.*?(\\.com|\\.org)"
GetContent(a,pattern)

抓取到c("http://asdfghjk.com","http://asdf.com","http://poiu.org","http://qwer.com")
但实际上我只想要中间的,就是c("asdfghjk","asdf","poiu","qwer"),应该如何解决?
二维码

扫码加我 拉你入群

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

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

关键词:如何实现 字符串 如何

回帖推荐

万人往LVR 发表于2楼  查看完整内容

pattern 改为 "(?

沙发
万人往LVR 在职认证  发表于 2016-8-2 16:53:21
pattern 改为 "(?<=http://).*?(?=(\\.com|\\.org))"
gregexpr加个参数perl=T

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 17:15