2013-02-12 14 views
0

假設我想提取在兩個定義的字符串之間找到的字符串。例如,函數,我們把它叫做parse_between()將工作與R如下:R中函數之間的簡單解析?

>main_string<-"the quick brown fox>$ jumps over the lazy </ dog" 
>substring<-parse_between(main_string, begin=">$", end="</") 
>substring 
[1] " jumps over the lazy " 

即使它可以產生對應於每個實例元素的向量更好。我搜索了一些可用於字符串操作的軟件包,比如「stringr」,但還沒有找到像這個例子所示的那樣容易地完成這些操作的功能。我的動機是,儘管搜索我不幸解析HTML文件還沒有找到一個HTML解析器R.

+0

你看過XML包嗎? http://cran.r-project.org/web/packages/XML/index.html – 2013-02-12 14:49:58

+0

嗯我只是假定它是XML特定的,它看起來pertinant謝謝。 – iantist 2013-02-12 17:20:55

回答

2

首先,看這個問題&非常仔細地回答: RegEx match open tags except XHTML self-contained tags

然後,如果仍然不爲所動,使用regexgsub,它們都具有指定行的開頭或結尾的元字符。你可以做的話,是取代

{start_of_line through to ">$"} 

什麼也沒有,然後用什麼代替

{"</" through to end_of_line} 

+0

認爲我可以避免實際學習正則表達式,但看起來不像它。無論如何,我認爲這對我有好處。謝謝你的笑聲。 – iantist 2013-02-12 16:33:29

+0

好的,刪除第一部分的人會使用'uptostring <-sub(x = main_string,pattern =「。x」,replace =「」)',然後第二部分會變得類似。此視頻[link](http://www.youtube.com/watch?v=NvHjYOilOf8)對理解正則表達式非常有幫助。有沒有方法可以說出但不包括角色或從角色開始但不包括角色? – iantist 2013-02-12 18:54:02

+0

是的:基本上你告訴正則表達式從行首開始(「$」),接受任何字符(使用「。」),只要它們不是(對於這個例子,不想包含「K」'$ 。[^ K]'如果這樣做不行,請責備我:-)並且挖掘一個正則表達式備忘單。 – 2013-02-12 19:35:54