【问题标题】:How to get editable categories from a MediaWiki page如何从 MediaWiki 页面获取可编辑的类别
【发布时间】:2021-01-31 10:39:36
【问题描述】:

我正在尝试从一个页面获取我正在 Wikipedia 上处理的用户脚本的所有可编辑类别。

我正在努力弄清楚如何从可编辑的类别中过滤掉不可编辑的类别。

这是应该获取可编辑类别列表的代码(到目前为止):

var categorylist = mw.config.get("wgCategories");
if (categorylist.length == 0) {
    ...
} else {
    $.get(mw.config.get("wgScriptPath") + "/api.php", {
        action: "parse",
        format: "json",
        page: mw.config.get("wgPageName"),
        prop: "wikitext"
    }).done(function(result) {
        var editablelist = result.parse.wikitext.match(/* some regex here */);
    })
}

我一直在尝试使用 RegExr 来找出匹配所有类别链接的内容:/\[\[Category:.*\]\]/g

I do not want to match the spaces between category links, just the individual category links.

有没有一种有效的方法来匹配 MediaWiki 页面的 wikitext 中的所有可编辑类别?

【问题讨论】:

    标签: javascript mediawiki


    【解决方案1】:

    如果类别链接之间的空格不匹配,请使用以下正则表达式:

    \[\[Category:[^\[\]]*\]\]
    

    参见here 演示。

    [^\[\]] 的意思是“一个既不是左方括号也不是右方括号的字符”。


    如果您既不想匹配方括号也不匹配最终的排序键,则需要更复杂的正则表达式:

    (?<=\[\[)Category:[^\[\]|]*(?=(?:\|[^\[\]]*)?\]\])
    

    查看here 以获取正则表达式演示。

    现在您要确保表达式前面有两个开放的方括号,后跟一个可选的排序键 (\|[^\[\]]*),最后是两个封闭的方括号。

    不会捕获包含在lookarounds((?&lt;=X)(?=X))中的每个子表达式。

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      相关资源
      最近更新 更多