【问题标题】:Regex for MediaWiki wikitext templatesMediaWiki wikitext 模板的正则表达式
【发布时间】:2012-01-24 05:06:31
【问题描述】:

Yaron Koren 的 ReplaceText MediaWiki 扩展允许我使用正则表达式来替换 MediaWiki 中的文本。我有大约 300 个具有两个模板实例的 MediaWiki 页面。我只想使用正则表达式删除第二个模板。 (什么都不换)

我有:

}} <--end of first template-->

{{Template Call

|blahField=blahValue

|blahField=blahValue

|...

}}

我想我要搜索:^[ \\}} \r \\{{ *? ]

并将其替换为:^[ \\}} ]

但是当我在rexv.org 测试它时,这并没有产生我想要的结果

感谢一些关于正则表达式的帮助。

【问题讨论】:

    标签: regex mediawiki


    【解决方案1】:

    extension page 上面写着

    允许的正则表达式集基本上是 PHP 和 MySQL 正则表达式集的一小部分(它只在 MySQL 上进行过测试——它是否适用于其他数据库系统尚不清楚)。可以在搜索字符串中使用的字符是 "( ) . * + ? [ ] |"

    所以也许你使用的字符不起作用。有没有可能是 \ 搞砸了?

    【讨论】:

    • 这正是我需要的线索。不过,我认为该功能是 touch-n-go,但我想这取决于我们 用户 来解释我们希望该功能如何表现不同。有选择真是太好了!
    【解决方案2】:

    ReplaceText 不适用于此类替换。使用 PyWikipediaBot 或 AutoWikiBrowser。

    【讨论】:

    • 我最终手动完成了这些更改。唉,我们不能使用 PyWikipediaBot。我以前从未见过 AutoWikiBrowser,但我也无法使用它。 ReplaceText 是我对任何自动化的唯一选择。不过,这似乎应该是可能的。我确信问题出在我使用的正则表达式的类型上。有没有一种方法可以执行特定于 SQL 的正则表达式?
    【解决方案3】:

    我在这里有一些技巧:

    1. 将您的 {{Template Call}} 模板清空。
    2. 使用 ReplaceText 将 \{\{ *Template[ _]Call(使用正则表达式以避免格式错误的调用)替换为 {{subst:Template Call
    3. 那么Template Call 的位置将被替换为{{Template Call}} 的内容,它是空的。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多