解析维基模板和JavaScript调用(Parsing wiki templates calls w

2019-09-27 17:59发布

所有这一切我需要的是分裂维基模板调用的参数部分。 在非常基本的情况是由刚刚分裂| 所以{{template|unnamed_parameter|param1=value1}}将被拆分,以{{templateunnamed_parameterparam1=value1}}

但事情复杂化,当管道字符用于其他目的像wikilinks [[link|title]]等。

任何建议如何做最简单的方法这个任务? :)

更新:对不起,可能的误解,但{{template|unnamed_parameter|param1=value1}}仅仅是一个例子。 有关维基模板的更多信息,你可以看看下面的资源: http://www.mediawiki.org/wiki/Help:Templates

Answer 1:

请看看这个Q&A: 我怎样才能解决这个wiki链接解析正则表达式?

我的回答(在更新部分)有使用perl regex是做非常类似维基链接解析。

更新:

好吧,这里是你的情况的Perl的正则表达式:

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

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

问:你确定你需要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


Answer 2:

正则表达式,它假定你的wiki模板始终3个部分:
更新排除假匹配模板{{template|[[link|name]]}}

regex:       \{\{(.+?)\|[^\[]{2}(.+?)\|(.+?)[^\]]{2\}\}
replacment:  $1,$2,$3
input:       {{template|unnamed_parameter|param1=value1}}
output:      template,unnamed_parameter,param1=value1

这是一个简单的正则表达式使用不愿意量词和逃避的“特殊”之意{}| 使用\
通过包括\{\{ \}\}的正则表达式你避免对比赛[[ ]]图案。



文章来源: Parsing wiki templates calls with Javascript