我理解基本正则表达式,但不确定以下引用的含义(关于如何实现wiki解析器),是否有人可以提供一些伪代码来启发我?
两级正则表达式
这是一种非常受欢迎的方法。它非常快,因为它只扫描原始文本两次。
这个想法是创建两种正则表达式 - 一种用于将文本拆分为不同类型的块(段落,标题,列表,预格式化块等),然后使用不同的字符级常规处理它们表达
引自:http://www.wikicreole.org/wiki/CommonWikiParsingTechniques
答案 0 :(得分:5)
这意味着不要尝试在单个Regex中完成多个任务,而是将其拆分为两个任务(两个级别);首先拆分,然后分别处理每个令牌。
我的观点是,人们经常不必尝试让一个正则表达式一次性做太多,而不是通过分割这样的不同任务来使事情变得更简单。
答案 1 :(得分:3)
看起来“两级正则表达式”是一个(稍微含糊不清)的术语,我在StackOverflow的一些答案中建议用于解析稍微困难(但仍然是常规)的语言问题。
一个示例是从HTML页面获取所有img src=
个网址。在一个正则表达式中执行此操作是可能的(但相当混乱);更有意义的是使用正则表达式获取所有<img>
标签(捕获整个标签),然后使用不同的正则表达式从每个匹配中获取src="http://some-url-here.com"
。这使得代码更具可读性,并且您只扫描文本两次。