【问题标题】:Regex for Mediawiki replacement用于 Mediawiki 替换的正则表达式
【发布时间】:2017-01-06 16:02:02
【问题描述】:

我在 MW 1.23 中使用 Replace Text extension(它使用 MySQL regexps)并且我想运行正则表达式,这将导致替换,如下例中的那些。关键是它应该只找到在标签之间有一个希腊语(扩展/多调)单词的匹配项,或者只是一个没有匹配的单词。

先替换这个位:

<b class="b3">

然后是第二个:

</b>

不是一个选项,因为还有其他不应替换的实例。

示例: 每个示例的第一个字符串是实际字符串,第二个字符串是替换后的样子。希腊语单词可以是任何希腊语单词(此处为“σπυρίς”和“ὑσμίνη”):

1.
Dim. of <b class="b3">σπυρίς</b>
Dim. of [[σπυρίς]]

2.
cf. <b class="b3">ὑσμίνη</b>
cf. [[ὑσμίνη]]

【问题讨论】:

  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • 我找不到任何方法来匹配标签之间的单个单词,谢谢您的评论-:)
  • 添加你尝试过的东西,它会帮助我们教你最好的

标签: regex mediawiki


【解决方案1】:

搜索以下模式:

<b class="b3">([^\s-\.]*?[σπυρίς]+?[^\s-\.]*?)<\/b>

并将其替换为:

[[$1]]

[σπυρίς] 可以扩展为您希望至少在标签之间包含的任何希腊字符。

【讨论】:

  • 谢谢,我试过了,问题是它会匹配空格字符、多词实例和其他字符,比如 -,我不想匹配。例如:cf. &lt;b class="b3"&gt;ἀφ-, ἐπαφ-αυαίνω&lt;/b&gt;cf. &lt;b class="b3"&gt;Βορόην· τὴν φῦσαν&lt;/b&gt;cf. &lt;b class="b3"&gt;ἀκτή, καρπός&lt;/b&gt; 我严格希望它匹配单个单词。
  • @greektranslator 我已经修改了正则表达式 (.*?\S*?) 。如果标签之间有任何空白字符,它将不再匹配。如果您还想排除其他字符,例如数字,您还可以使用以下排除集而不是 \S*?[^\s0-9]*?
  • 谢谢,这样更好,但它仍然匹配包含破折号或句号的单词,即&lt;b class="b3"&gt;-ρεως&lt;/b&gt;cf. &lt;b class="b3"&gt;κελλίβας.&lt;/b&gt;
  • 就像我说的,您可以使用排除集并排除您不想要的每个字符:[^\s-\.]*? 用于除空格、破折号和点之外的所有字符。我会再改编一次……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
相关资源
最近更新 更多