Python 跟踪字符串中的标记最有效的方法是什么?

Python 跟踪字符串中的标记最有效的方法是什么?,python,html,regex,markdown,markup,Python,Html,Regex,Markdown,Markup,这个问题可能是以不同的方式提出的,如果是,请向我指出。我只是在搜索结果中找不到它 我想为标记解析文本,比如这里的标记 例如。*一些用于项目符号列表的字符串 例如,斜体文本的某些字符串* 例如,某个URL的字符串(&S) 例如,与字符串不同的url的某些字符串和特定url(&S) 等等 我可以想出两种方法来处理字符串以找出特殊的标记序列: a。我可以以字符为中心的方式继续,即解析字符串以查找序列1,然后是序列2等。但是,这似乎效率低下,因为它必须多次解析字符串 b。似乎最好一个字符一个字符地处理字

这个问题可能是以不同的方式提出的,如果是,请向我指出。我只是在搜索结果中找不到它

我想为标记解析文本,比如这里的标记

例如。*一些用于项目符号列表的字符串 例如,斜体文本的某些字符串* 例如,某个URL的字符串(&S) 例如,与字符串不同的url的某些字符串和特定url(&S) 等等

我可以想出两种方法来处理字符串以找出特殊的标记序列:

a。我可以以字符为中心的方式继续,即解析字符串以查找序列1,然后是序列2等。但是,这似乎效率低下,因为它必须多次解析字符串

b。似乎最好一个字符一个字符地处理字符串,并保留对特殊字符及其位置的记忆。如果内存与上述特殊序列匹配,则字符串中的特殊字符将替换为HTML。然而,我不确定这是否是一个更好的主意,也不确定应该如何实施

最好的办法是什么?正则表达式呢?它遵循模式a还是模式b?还有第三种选择吗


另外,我正在使用Python。非常感谢Python示例。

当然是正则表达式!如果你还没有这样做,就去学吧。完成后,你会发现很难想象没有它你会如何生活。您显示的示例使用正则表达式非常简单。例如,一个星号、一个空格和一个单词表示为:

\*\s\w+


只有正则表达式。

您实际上是在尝试实现词法分析器或“lexer”。您可以尝试搜索“lexer”、“parser”、“markup”以进一步阅读材料。[编辑:我可能是指解析器,而不是词法分析器。词法分析器是解析器的一部分。]

解析器通常是使用正则表达式作为解决方案的一部分来实现的,但还有更多的内容

如果你这样做是为了降低价格,你确定你不想使用一个有一些非常快速和测试良好的降低价格解析器已经存在


旁注:请尽量不要使用自己的标记语法-已有几十种纯文本标记语言。挑一个你喜欢的并用它。我想到了维基百科的格式、降价和其他内容。有现成的工具可以解析这些函数。

我认为正则表达式可能是最简单的方法。这不是最有效的,但除非你处理几百KB的文档,否则你可能不会有任何问题。你确定要这样做吗?@minitech:我想存储文档及其标记,并希望能够加载HTML翻译而不会出现延迟。页面不应该太大,但是它的大小将取决于最终用户。@RepWhoringPeeHaa:你的公式没有帮助,你的意思是什么?我使用过RE,但从来没有在搜索和替换中使用过,也从来没有使用多个可能的序列来使用同一个字符。我会试试你的建议。谢谢。+1,我会检查此链接并选择最接近的匹配项。