假設我有串象下面這樣:一對R中使用GSUB括號內刪除任何
<a>b<c>
我想刪除這兩個<a>
和<c>
,但我不能使用gsub("<.*>","","<a>b<c>")
,因爲這將刪除b
也。
我之前問過類似的問題,但第二個想法,我認爲我應該總體學習如何處理這類問題。謝謝。
假設我有串象下面這樣:一對R中使用GSUB括號內刪除任何
<a>b<c>
我想刪除這兩個<a>
和<c>
,但我不能使用gsub("<.*>","","<a>b<c>")
,因爲這將刪除b
也。
我之前問過類似的問題,但第二個想法,我認爲我應該總體學習如何處理這類問題。謝謝。
不要讓一個右括號>
在東西方括號之間:
z <- "<a>b<c>"
gsub("<[^>]+>","",z)
你可以使用一個非貪婪的正則表達式,例如。 /<.*?>/
。
這隻適用於簡單的HTML,可以很容易地被顛覆。考慮下面的HTML,使用正則表達式不容易刪除它。
<span title="Help > Index">
您已錯過了一個 '?'在正則表達式中。 –
還有一個想法,往往是相當嘈雜設置有用的(即當談到接近做出一個標記) :
strsplit("<a>b<c>",split='<|>')[[1]][3]
更一般的解決方案是使用解析器。除非可以確定沒有轉義符號,每個符號匹配,嵌套不會發生以及許多其他警告,否則最好使用解析器。關於正則表達式和HTML,有一個非常有名的問題。儘管你沒有提到過HTML,但它看起來像你可能正朝着HTML和XML等標記語言的方向發展。 – Iterator