所有这一切我需要的是分裂维基模板调用的参数部分。 在非常基本的情况是由刚刚分裂|
所以{{template|unnamed_parameter|param1=value1}}
将被拆分,以{{template
, unnamed_parameter
, param1=value1
和}}
但事情复杂化,当管道字符用于其他目的像wikilinks [[link|title]]
等。
任何建议如何做最简单的方法这个任务? :)
更新:对不起,可能的误解,但{{template|unnamed_parameter|param1=value1}}
仅仅是一个例子。 有关维基模板的更多信息,你可以看看下面的资源: http://www.mediawiki.org/wiki/Help:Templates
请看看这个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
正则表达式,它假定你的wiki模板始终3个部分:
更新排除假匹配模板{{template|[[link|name]]}}
regex: \{\{(.+?)\|[^\[]{2}(.+?)\|(.+?)[^\]]{2\}\}
replacment: $1,$2,$3
input: {{template|unnamed_parameter|param1=value1}}
output: template,unnamed_parameter,param1=value1
这是一个简单的正则表达式使用不愿意量词和逃避的“特殊”之意{}|
使用\
通过包括\{\{ \}\}
的正则表达式你避免对比赛[[ ]]
图案。