Linux
ubuntu 上的非貪婪 grep 命令?
我正在建構一個腳本,它會從我們的模板系統中過濾掉所有可翻譯的內容。我面臨的問題是 2 個可翻譯文本在一條線上的情況。
這些是模板文件中的 2 行範例,它們都包含一個或多個可翻譯
<img src="/captcha/generate.jpg" alt="[#Captcha#]" /> <span>[#Velden met een * zijn verplicht in te vullen#]</span> <button type="submit" name="frm_submit" class="right">[#Verzend#]
當我放開以下正則表達式時
egrep "\[#(.*)#\]" . -Rohis
我得到這個輸出
[#Captcha#]" [#Velden met een * zijn verplicht in te vullen#]</span> <button type="submit" name="frm_submit" class="right">[#Verzend#]
雖然所需的輸出是
[#Captcha#] [#Velden met een * zijn verplicht in te vullen#] [#Verzend#]
同意凱爾。但是,在這種情況下,您可以這樣做:
egrep "\[#([^]])*)#\]" . -Rohis
得到您正在尋找的東西。
[^]]*
匹配非]
字元,所以它會在第一個命中]
時停止。
嘗試使用正則表達式解析 HTML 會很痛苦,只是不要這樣做。Jeff 在Parsing Html The Cthulhu Way中寫道。“但我只想______”,沒關係,認真的,別做。花點時間學習一些旨在解析 html 的東西。
我個人會為此推荐一個 Perl 模組(例如HTML::TreeBuilder),但是您知道哪些語言?其他選項是:tidy+ xmlstarlet xmlgawk xpath xml2。
如果您只想要文本中的“渲染”html,您可以使用連結之類的東西:
links -dump www.google.com