假设我有以下数据,
data
text
abc/1234&
qwertyabc/5555&
a&sdfghabc/ppp&plksa&
z&xabc/lkjh&poiuw&
lkjqwefasrjabc/855698&plkjdhweb
例如,如果我想解析abc /和第一次出现&之间的文本。单独,我如何解析这些文本之间的文本。我希望在第一次出现abc /和第一次出现&之间的文本。在abc /发生之后。
我的输出应该如下,
数据
text parsed_out
abc/1234& 1234
qwertyabc/5555& 5555
a&sdfghabc/ppp&plksa& ppp
z&xabc/lkjh&poiuw& lkjh
lkjqwefasrjabc/855698&plkjdhweb 855698
以下是我的尝试,
data1 = within(data, FOO<-data.frame(do.call('rbind', strsplit(as.character(text), 'abc/', fixed=TRUE))))
data2 = within(data1, FOO1<-data.frame(do.call('rbind', strsplit(as.character(FOO$X1), '&', fixed=TRUE))))
这使用了太多的内存,因为文本文件有800万行,而data2也有几列,因为它有几个'&amp;'。任何人都可以帮助我以最有效的方式将这两个字符之间的文本解析为只有一列,这样它就不会占用太多的内存吗?
x = "thesearepresentinthestartingwhichisnotneededhttp://google.com/needstobeparsedout&reoccurencenotneeded&"
这里,该函数应该检查http://google.com/并解析直到第一个&amp;找到了。这里的输出应该是必须的。
new_x =“\”http://www.google.com/search?q=erykah+badu+with+hiatus+kaiyote,+august+3&“”
为什么不使用此链接?
由于
答案 0 :(得分:0)
我实际上想要解析网址的几个部分,例如,我想解析一下,&#34; http:www.google.com /&#34;并且第一次出现&#34;&amp;&#34;。
使用
sub(".*?https?://(?:www\\.)?google\\.com/([^&]+).*", "\\1", x)
请参阅regex demo。
模式匹配:
^
以匹配字符串位置的开头).*?
- 从开头到第一个https?://
- https://
或http://
后跟(?:www\\.)?
- 1或0(可选)序列www.
google\\.com/
- 文字google.com
([^&]+)
- 除&
以外的1个或多个字符(捕获组1).*
- 任何0+字符(直到字符串结尾)。在替换模式中,\1
指的是捕获到组1中的子文本。