javascript - 使用 Javascript 解析 wiki 模板调用

标签 javascript regex parsing wiki

我所需要的只是将 wiki 模板调用拆分为参数部分。在非常基本的场景中,它只是被 | 分割,因此 {{template|unnamed_pa​​rameter|param1=value1}} 将被分割为 {{template >、unnamed_pa​​rameterparam1=value1}}

但是当管道字符用于其他目的时,例如维基链接[[link|title]]等,事情就会变得复杂。

有什么建议如何以最简单的方式完成这项任务吗? :)

更新:很抱歉可能造成误解,但 {{template|unnamed_pa​​rameter|param1=value1}} 只是一个示例。有关 wiki 模板的更多信息,您可以查看以下资源:http://www.mediawiki.org/wiki/Help:Templates

最佳答案

请看这个问答:How can I fix this wiki link parsing regular expression?

我的答案(在更新部分)使用 perl regex 进行非常类似的 Wiki 链接解析。

更新:

好吧,这是适合您情况的 Perl 正则表达式:

echo "{{template|unnamed_parameter|param1=value1}}" |  \
perl -pe 's#(^|\b)((?![|\[]){{(.+?)\|(.+?)\|(.+?)}}(?![|\]]))($|\b)#{{$3, $4, $5 and }}#g'

Output: {{template, unnamed_parameter, param1=value1 and }}

问:您确定在关闭}}之前需要这里的吗?否则只需编辑上面的正则表达式:

现在根据字符串检查上述解决方案[[link|title]]

echo "[[link|title]]" |  \
perl -pe 's#(^|\b)((?![|\[]){{(.+?)\|(.+?)\|(.+?)}}(?![|\]]))($|\b)#{{$3, $4, $5 and }}#g'

Output: [[link|title]] # remains unchanged as per your requirements

关于javascript - 使用 Javascript 解析 wiki 模板调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5460500/

相关文章:

javascript - 在 Angular 中授权检查访问

javascript - 如何使用javascript移动图像

javascript - JavaScript 中的递归嵌套属性创建

python - 使用字典替换pandas数据框中的字符串而不覆盖

javascript - 正则表达式失败 javascript

javascript - 使用 JavaScript 排除正则表达式行首或行尾的匹配项

r - 你如何从 R 中的文件名中提取日期?

c++ - 存储当前被 flex 分析的行

c - 从文本文件中扫描可变编号 'fields'

parsing - LALR(1) 解析器中的冲突解决