【问题标题】:Regex and replacement with numbers and texts正则表达式和替换为数字和文本
【发布时间】:2019-04-16 09:47:38
【问题描述】:

在 epub 代码中,我有这样的文字:

<span>Capitulo 1 - Apple is red</span>
<span>Capitulo 2 - Milk is white</span>
<span>Capitulo 3 - Weeds are green</span>

我需要用“h1”标签替换“span”标签,用“chapter”替换“capitulo”的所有实例,保留其余的文本。我试过这个口径,没有运气:

Find: <span>Capitulo (/d+) * </span>
Replace: <h1>Chapter /1 * </h1>

我能做什么?

第二个问题: 如果我有这个文本:

<span>Capitulo 1 - apple is red, 5 chicas</span>
<span>Capitulo 2 - milk is white, 6 chicas</span>
<span>Capitulo 3 - weeds are green, 7 chicas</span>

我想获得:

<h1>Chapter1 - apple is red, 5 girls</h1>
<h2>Chapter2 - milk is white, 6 boys</h2>
<h3>Chapter3 - weeds are green, 7 men</h3>

我应该怎么做?

【问题讨论】:

  • &lt;span&gt;Capitulo ([^&lt;]*)&lt;/span&gt; => &lt;h1&gt;Chapter \1&lt;/h1&gt;
  • 你可以试试这个&lt;span&gt;Capitulo(\s*\d+.*?)&lt;\/span&gt;demo
  • @WiktorStribiżew 是不是需要转义&lt;&gt;/
  • @IldarAkhmetov /not special in PCRE/ 只能在正则表达式中转义,文本编辑器只能使用字符串模式。
  • @CodeManiac 当然,但它不会使 / 成为“特殊正则表达式元字符”含义中的“特殊”。

标签: regex replace numbers calibre


【解决方案1】:

你可以使用

查找&lt;span&gt;Capitulo ([^&lt;]*)&lt;/span&gt;
替换&lt;h1&gt;Chapter \1&lt;/h1&gt;

查看regex demo 和 Regulex 图:

([^&lt;]*) 部分匹配除 &lt; 之外的任何 0 个或多个字符,因为 [^&lt;]negated character class(...) 形成 capturing group,其内容可通过 backreferences 从替换模式访问(请参阅替换中的\1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2014-03-11
    相关资源
    最近更新 更多