我在R上工作,我想從PlainTextDocument中提取所有關閉 的HTML標記。 我使用GSUB法正則表達式:提取所有html標記,並用正則表達式關閉
gsub("<?!([^<]/*)>"," ",fm,perl=TRUE,ignore.case=TRUE)
但是,斜槓「/」未評估。
我想我不是很清楚。
這是我需要做的:
我有一個文本(HTML文檔),我想只保留標籤(<>
和</>
)。我認爲使用gsub會是一個好主意,但也許你有更好的解決方案。
我在R上工作,我想從PlainTextDocument中提取所有關閉 的HTML標記。 我使用GSUB法正則表達式:提取所有html標記,並用正則表達式關閉
gsub("<?!([^<]/*)>"," ",fm,perl=TRUE,ignore.case=TRUE)
但是,斜槓「/」未評估。
我想我不是很清楚。
這是我需要做的:
我有一個文本(HTML文檔),我想只保留標籤(<>
和</>
)。我認爲使用gsub會是一個好主意,但也許你有更好的解決方案。
它可能需要被「轉義」:\\/
你的問題的措辭不清楚,你的正則表達式並沒有多大意義,但如果你只是想匹配任何看起來像一個HTML標籤這應該這樣做:
"<[^<>]+>"
這將同時匹配開始和結束標記(例如,<tag attr="value">
和</tag>
)。如果您想僅匹配自動關閉標籤(例如,<tag />
),這應該工作:
"<[^<>]+/>"
還有人建議,斜槓(/
)具有特殊的意義,需要逃過一劫,但事實並非如此。如果您使用的是Perl,您可以使用此命令來執行替換:
s/<[^<>]+\/>/ /g
但是斜線本身沒有特殊含義;我只需要轉義它,因爲我用它作爲正則表達式分隔符。我可以簡單地使用不同的分隔符:
s~<[^<>]+/>~ ~g
但是R不像Perl那樣在語言級別支持正則表達式;正則表達式和替換是以字符串文字的形式編寫的,就像它們在Java和C#中一樣。不像PHP,它不需要你仍要添加分隔符,如:
preg_replace("/<[^<>]+\/>/", " ")
但即使PHP可以讓你選擇自己的分隔符:
preg_replace('~<[^<>]+/>~', ' ')
之前有人叫我出去這,我知道<[^<>]+>
是有缺陷的 - 實際上沒有任何HTML標籤正確的正則表達式。這在很多情況下都會執行,但解析HTML的唯一真正可靠的方法是使用專用的HTML解析器。
我回答了我自己的問題,我希望我讓自己更清楚。 – PoLuX 2012-03-26 08:29:00
你需要逃避'/'嗎? – Cheetah 2012-03-23 22:35:35
我同意本,如果這是正在被解析爲perl正則表達式不perl使用'/'作爲分隔符? – 2012-03-23 22:37:27
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#answer-1732454 – Axeman 2012-03-23 23:01:18