在Python中解析类似Stackoverflow的文本框

时间:2012-05-01 11:54:48

标签: python regex

我有<textarea>用户输入文字的地方。该文本可以包含特殊字符,我需要使用HTML标记进行解析和替换以用于显示目的 例如:
粗体文字将输入为:*some text*并解析为:<strong>some text</strong> 网址将输入为:#some text | to/url#并解析为:<a href="to/url">some text</a>

解析此文本输入的最佳方法是什么? 正则表达式? (我对正则表达式没有任何经验) 一些Python库?
或者我应该编写自己的解析器,“读取”输入并在需要的地方应用逻辑?

3 个答案:

答案 0 :(得分:4)

您描述的语言的重点元素看起来像Markdown

您应该考虑使用Markdown。还有一个Python module可以解析它。

答案 1 :(得分:1)

最好的方法取决于您输入的“语言”究竟是什么。如果它具有与HTML相同的嵌套结构,则不希望使用正则表达式。 (必要的链接:RegEx match open tags except XHTML self-contained tags

您是否正在发明自己的小标记语言?

  • 如果你是:为什么?为什么不使用已存在解析器的已存在的一个,例如Markdown或reST?
  • 如果你不是:为什么要编写自己的解析器?已经没有了吗?

答案 2 :(得分:1)

您可以查看一些现有的库来解析wiki文本:

这个似乎与您定义的格式相同。

  

标题:! Heading1文字!!标题2文字!!! Heading3文本

     

粗体:粗体文字

     

斜体:斜体文字

     

下划线:+带下划线的文字+

或者这个有一个非常简单的API并且允许检查给定文本是否实际上是维基文本。

更新 - 添加了python wiki解析器:

查看来自here的wiki解析器列表。

Media wiki-parser似乎是一个很好的python解析器,可以从wiki标记生成html:

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