2010-08-29 75 views
6

可能重複:
RegEx match open tags except XHTML self-contained tags從HTML標記內獲得一個本地文件中的文本使用grep

摘自輸入文件

<TD class="clsTDLabelWeb" width="28%">Municipality:&nbsp;</TD> 
<TD style="WIDTH: 394px" class="clsTDLabelSm" colSpan="5"> 
<span id="DInfo1_Municipality">JUPITER</span></TD> 

我的正則表達式

(?<=<span id="DInfo1_Municipality">)([^</span>]*) 

我有一個HTML文件保存到磁盤。 我想使用grep來搜索文件並輸出特定範圍的內容,但我不知道這是否正確使用grep。當我從另一個文件讀取表達式的文件上運行grep(所以我不會亂搞任何特殊字符),它不會輸出任何內容。我已經在RegExr中測試了表達式,並且它匹配了「JUPITER」,這正是我想要返回的。非常感謝你的幫助!

所需的輸出

JUPITER 
+2

http://stackoverflow.com/questions/1732348/regex-match-open -tags-except-xhtml-self-contained-tags/1732454#1732454 – msw 2010-08-29 01:04:06

回答

1

的grep不支持這種類型的正則表達式(向後斷言),它爲這個一個非常貧窮的工具,但對於給定的例子是可行的,在很多situtions將打破。

grep -io "<span id=\"DInfo1_Municipality\">.*</span>" file.htlm | grep -io ">[^<]*" | grep -io [^>]* 

東西這樣瘋狂,不是一個好主意。

+0

謝謝。我有一種感覺,我試圖做一些grep不支持的事情。看起來我必須做一些實際的編程。 – 2010-08-29 01:15:18

1
sed -n '/DInfo1_Municipality/s/<\/span.*//p' file | sed 's/.*>//' 
3

這給一試:

sed -n 's|^<span id="DInfo1_Municipality">\([^<]*\)</span></TD>$|\1|p' file 

或GNU grep和您正則表達式:

grep -Po '(?<=<span id="DInfo1_Municipality">)([^</span>]*)' 
+0

將-P標誌傳遞給grep允許我執行後面的lookbehead/lookahead。謝謝你的提示 – james 2013-01-10 18:10:10

相關問題