我希望有一些正则表达式的大师帮我解决这个问题:
我有[[AB]]
,[[ABC]]
和[[BEC]]
等字符串,我想用字符串{{param|AB}}
,{{param|ABC}}
和{{1}替换它们分别。
所有源字符串都在[[]]内,并且有2或3个大写字母。我们的想法是将括号内的字母转换为新格式。如果我需要两个不同的正则表达式来处理2个和3个字母长的情况,那就没问题了。
(如果好奇,这是用于在基于Mediawiki的页面中用模板替换大量链接。)
提前致谢!
答案 0 :(得分:3)
您可以替换以下正则表达式的结果:
/\[\[([A-Z]{2,3})\]\]/
with:
{{/param\|\1/}}
并非某些正则表达式引擎会将$
用于捕获组,因此您可能需要使用{{/param\|$1/}}
如果您想要排除某些字词,可以使用负面预测:
/^\[\[((?!AAA|BBB|CCC)[A-Z]{2,3})]]$/gm
但请注意,由于前面的正则表达式使用锚点,如果要处理多行字符串,则需要使用m
标志(多行标记)。
答案 1 :(得分:2)