2016-07-10 84 views
-2

我使用傑奇我想從一個給定的HTML文件時自動去除液體的代碼(僅液體代碼)建立一個網站。我使用正則表達式做它在Python,到目前爲止,我有這樣的一個:正則表達式匹配液代碼

\{.*?\}|\{\{.*?\}\} 

由於我不是太熟悉的液體(和.html),可能有人證實,這將足以滿足我的目標?

這裏是我將與合作的文件類型的例子:

在這種情況下我正則表達式的作品,但我想確保我不會失去了一些東西的未來。我可以去一個hackish的方式與周圍所有評論液體類似的代碼

/* start_liquid */ {blalala} /* end_liquid */ 

,但我在尋找一個更優雅的方式來做到這一點。

+0

downvoter(s)可以給出他們的理由嗎? – amakelov

+1

我實際上並沒有倒退,但我認爲他們希望你舉一個液體代碼的例子來得到一個完整的工作示例。 – Ohumeronen

+1

我檢查了您提供的代碼。對我來說看起來很不錯,下面給出的正則表達式只與{}或{{}}所包含的代碼相匹配。如下所述,我只會半自動替換。我用凱特來驗證的方式... – Ohumeronen

回答

-1

我居然不知道液體,但是我認爲代碼塊總是包含在爲{}或{{}}。我認爲這是很難找到一個正則表達式,不會像這場比賽的東西:

print "This is my string with a number {}, cool!".format(42) 

我會建議您打開,突出你的正則表達式的所有匹配的編輯HTML文件。例如,凱特或吉妮可以做到這一點。比你可以用空字符串半自動替換所有的事件。但是,我強烈建議不要在沒有檢查過代碼的情況下替換代碼中的所有事件。你很可能會替換重要的東西。

我也將使用這個正則表達式:

\{[^\}]*\}|\{\{[^\}]*\}\} 

編輯(見上文評論):

從我的理解,我認爲要必須有你的代碼的兩個版本的可能性液體或JavaScript。我想到的唯一優雅的解決方案就是使用git來解決這個問題。您可以創建兩個獨立的項目分支,一個用於液體,一個用於JavaScript。這使您可以分別在兩個版本上工作,並使您能夠在兩個版本之間切換。

編輯2:

我還沒有找到一個更好的解決辦法放棄。你也可以重新發布你的問題,讓其他用戶更清楚你的問題。有可能是一個更優雅的解決方案。

0

說你應該,但你可以使用像一個「髒」的解決方案:

{%\ (if)[\s\S]*?{%\ end\1\ %}| 
{%.+?%}| 
{{.+?}} 

這符合所有提供的模板代碼,請參閱a demo on regex101.com
附加的調整將是擴展的交替組(if)或完全使用解析器。