我试图来标记在Python以下输入:符号化复杂的输入
text = 'This @[email protected] is "neither":/defn/neither complete[1] *nor* trite, *though _simple_*.'
我想产生类似下面的同时避免使用正则表达式:
tokens = [
('text', 'This '),
('enter', 'code'),
('text', "example")
('exit', None),
('text', ' is '),
('enter', 'a'),
('text', "neither"),
('href', "/defn/neither"),
('exit', None),
('text', ' complete'),
('enter', 'footnote'),
('id', 1),
('exit', None),
('text', ' '),
('enter', 'strong'),
('text', 'nor'),
('exit', None),
('text', ' trite, '),
('enter', 'strong'),
('text', 'though '),
('enter', 'em'),
('text', 'simple'),
('exit', None),
('exit', None),
('text', '.')
]
假装以上是由发电机产生的。我的current implementation的作品,虽然代码有点可怕,不容易扩展到支持链接。
任何援助将不胜感激。
已更新,将所需的语法从复杂的嵌套列表结构更改为简单的元组流。对我们人类的缩进。在链接文本中格式化是可以的。这里是a simple parser,它生成我正在寻找的lexing结果,但仍然不处理链接或脚注。
有趣。为什么你想避免使用正则表达式的任何特定原因? – NullUserException
['shlex'](http://docs.python.org/library/shlex.html)可以为您提供帮助并且开箱即用 – JBernardo
@NullUserException正则表达式比当前解决方案慢几个数量级,并且变得复杂当你开始处理嵌套规则集时。 – amcgregor