2012-05-01 16 views
1

我有一個<textarea>用戶輸入他的文本。該文本可以包含特殊字符,我需要使用HTML標記進行分析和替換才能進行顯示。
例如:
粗體文本將輸入爲:*some text*並解析爲:<strong>some text</strong>
URL將被輸入爲:#some text | to/url#和解析到:<a href="to/url">some text</a>在Python中解析類似Stackoverflow的文本框

什麼是解析這個文本輸入的最佳方式?
正則表達式? (我沒有任何正則表達式的經驗) 一些Python庫?
或者我應該寫我自己的解析器,「閱讀」輸入並在需要時應用邏輯?

+3

看一看降價的Python嘗試自己寫任何東西之前。 http://freewisdom.org/projects/python-markdown/ – alan

+0

謝謝,我接受這個解決方案作爲最好的方法 – user1102018

回答

1

最好的方法取決於你的輸入「語言」是什麼。如果它具有與HTML相同類型的嵌套結構,則不需要使用正則表達式來完成。 (必須鏈接:RegEx match open tags except XHTML self-contained tags

您是否在發明自己的小標記語言?

  • 如果您是:爲什麼?爲什麼不使用其中已存在解析器的現有解析器之一(如Markdown或reST)?
  • 如果你不是:你爲什麼要編寫自己的解析器?有沒有一個?
+0

我需要一個簡單的文本框和一些額外的東西,比如:粗體文本,斜體和鏈接。我需要它對用戶來說很簡單(這就是爲什麼我使用星號代替HTML標籤的原因)。當然,我會很樂意使用已有的庫,而不是自己編寫一個庫。我只是不知道任何... – user1102018

+0

然後看看由ArjunShankar和user433831鏈接的那些... –

1

你可以看看解析維基文本一些現有的庫:

這一次似乎與你定義的格式相同的工作。

標題:!標題1文本!標題2文本! Heading3文本

粗體:黑體字

斜體:斜體

下劃線:+下劃線文字+

或者這個有一個非常簡單的API,並允許檢查給定的文本是否實際上是一個wiki文本。

修訂 - 增加了蟒蛇維基解析器:

在看看從here維基解析器的列表。

媒體維基解析器似乎是一個良好的Python語法分析器,從維基標記生成HTML:

https://github.com/peter17/mediawiki-parser

+0

謝謝,這看起來像我在想什麼,但我正在尋找一個服務器端解析器。但是我可能會從你的鏈接中獲得一些想法。 – user1102018

+0

我已經從github添加了一個好的python解析器,可能適合你。 – txominpelu

+0

太棒了,我會循環。謝謝 – user1102018