【问题标题】:Find and replace a specific reference pattern by a regular expression (no.2)用正则表达式查找和替换特定的参考模式(2)
【发布时间】:2015-04-20 06:15:24
【问题描述】:

今天,我很高兴在此处为我的第一篇帖子找到了解决方案:Find and replace a specific reference pattern by a regular expression

我想替换以下条目(以及我文档中的更多此类类型),以便(数字 1、2、3、4 或 5,仅当存在时,加上)前三个字母写在 textit 后面的括号中。必须附加初始表达式。

输入:

\nobreakword{(vgl. 1. Johannes 4,16)}
\nobreakword{(vgl. Daniel 4,15.17.32f.)}    
\nobreakword{(vgl. 2. Könige 7,7)}         

=> 输出:

\index[bibel]{@1. Johannes!\textit{1Joh 4,16}}\nobreakword{(vgl. 1. Johannes 4,16)}
\index[bibel]{@Daniel!\textit{Dan 4,15.17.32f.}}\nobreakword{(vgl. Daniel 4,15.17.32f.)}
\index[bibel]{@2. Könige!\textit{2Könige 7,7}}\nobreakword{(vgl. 2. Könige 7,7)}

括号内还有 ä/ö/ü 字符。

我想包括其中数字部分写在下一行的模式(因为复制粘贴)在文本和数字之间有一个 ENTER(空格/许多空白字符)。

\nobreakword{(vgl. 
    1. Korinther 13,4-7.8-12)}           => \index[bibel]{@1. Korinther!\textit{1Kor 13,4-7.8-12}}\nobreakword{(vgl. 1. Korinther 13,4-7.8-12)}
\nobreakword{(vgl. 1. 
       Korinther 13,4-7.8-12)}           => \index[bibel]{@1. Korinther!\textit{1Kor 13,4-7.8-12}}\nobreakword{(vgl. 1. Korinther 13,4-7.8-12)}
\nobreakword{(vgl. 1. Korinther 
            13,4-7.8-12)}                => \index[bibel]{@1. Korinther!\textit{1Kor 13,4-7.8-12}}\nobreakword{(vgl. 1. Korinther 13,4-7.8-12)}

我还有其他不应更改的文本:

\index[stichwort]{Begriffe!Zeichen}      => \index[stichwort]{Begriffe!Zeichen}
\index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Personen!Abraham} => \index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Personen!Abraham}

如果可能的话,我想再次使用https://regex101.com

我试过(没有成功): \\nobreakword{(vgl. (\d+)(?:\.\s+))?(.{3})[\s\S]*?([a-z0-9.,-]+)}

是否可以使用单个搜索模式+单个替换模式和正则表达式来一步替换所有示例?

编辑

所有名称“Johannes”、“Daniel”、“Könige”、“Korinther”等的长度至少为 3 个字符。

我喜欢输入以下测试字符串:

        \chapter{Gottes Liebesbeweis an uns Menschen}

        \begin{flushright}\footnotesize\textit{ursprünglicher Beitrag vom 29. April 2014 überarbeitet}\end{flushright}

        - Gott ist Liebe. \nobreakword{(vgl. 1. Johannes 4,16)}\\
        - Jesus Christus ist der Erstgeborene der gesamten Schöpfung. (vgl. Kolosser 1,15-17) \index[bibel]{51@Kolosser!\textit{Kol 1,15-17}}
        \index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Erstgeburt/Erstgeborener}\\
        - Im Anfang, nachdem Jesus war, schuf Gott Himmel und Erde. (vgl.
        1. Mose 1,1)\index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Himmel}\\
        - Liebe braucht ein Gegenüber: Gott hat den Menschen geschaffen nach
        dem Bild von Gott, der fähig war, Liebe zu empfinden und zurückzulieben.
        \nobreakword{(vgl. 1. Mose 1,26)}\\
        - Echte Liebe kann nur bedingungslos sein und muss dem Gegenüber erlauben,
        sich gegen die Liebe zu entscheiden. \nobreakword{(vgl. 1. Korinther 13,4-7)}\\
        - Gott erwählte Jesus bereits vor Erschaffung des Menschen, weil ER
        bereits zu Anbeginn der Zeit wusste, dass alle Menschen Unrecht tun
        werden und Rettung benötigen. \nobreakword{(vgl. Epheser 1,3-4)}
        \index[stichwort]{Begriffe!Gerechtigkeit/Gerechtsprechung/Gerechte/ \newline Rechtfertigung}\\
        - Gott kann alles tun, was ER tun möchte \nobreakword{(vgl. Daniel 4,32)}\\
        - Gott erlaubt jedem seiner Geschöpfe die Entscheidung, ob es mit
        IHM - genauer: in IHM - leben möchte oder nicht: Ein Engel Gottes
        in niedriger Stellung in einem der Himmel wollte sich dem Allerhöchsten
        gleich machen in dem dieser Engel zum einen Himmel emporsteigt und
        ist bei diesem Vorgehen hinabgestürzt. \nobreakword{(vgl. Jesaja 14,12-14)}\\
        - Liebe ist bereit ein Risiko einzugehen: Gott überlässt seinen Geschöpfe
        gewisse Entscheidungen. \nobreakword{(vgl. 1. Mose 2,16-17)}\\
        - Der gefallene Engel hatte die Macht Adam und Eva zu versuchen. (vgl.
        1. Mose 3,1)\index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Personen!Adam}\\
        - Adam und Eva wollten sein wie Gott, sie wollten dieselbe Erkenntnis
        haben wie Gott. \nobreakword{(vgl. 1.Mose 3,5)}\\
        - Gottes Gedanken, Wege, Weisheit und Erkenntnis sind unbeschreibbar
        viel grösser als die unseren. \nobreakword{(vgl. Römer 11,33)}\index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Weg}\\
        - Gott lässt sich nicht über eine bestimmte Anzahl von Bildern definieren;
        Gott spricht: "Ich bin, der ich bin".
        \nobreakword{(vgl. 2. Mose 3,14)}\\
        - Wir haben uns vor Gott getrennt, weil wir selbst unabhängig sein
        wollten, anstatt IHM ganz zu vertrauen und gehorchen. \nobreakword{(vgl. Römer 3,12)}\\
        - Als Folge des Sündenfalls im Garten Eden kam der Tod. \nobreakword{(vgl. Römer 6,23)}\\
        - Die Schöpfungsordnung, dass der Mensch und die Tiere sich von Pflanzen
        ernähren sollte wurde zerstört. \nobreakword{(vgl. 1. Mose 1,29-30)}\\
        - Adam und Eva wurden durch den Ungehorsam Gott gegenüber der Sünde
        Sklave der Sünde. \nobreakword{(vgl. Johannes 8,34)}\\
        - Die Bosheit der Nachkommen Adam und Eva nahm immer weiter zu, dass
        sich nach meiner Auslegung gefallene Engel Gottes mehreren Frauen
        paarten und ihnen Riesen gebaren, wonach auch Gottes Gericht - die
        Sintflut - kam. \nobreakword{(vgl. 1. Mose 6, 1-7)} \index[stichwort]{Begriffe!Zorn/Gericht/Vergeltung/Hölle/Tod}\index[stichwort]{Bilder [wörtl./bildhaft:Gleichnis,Symbol/beides]!Sintflut}\\
        - Alle Menschen sind schuldig geworden, und werden durch den Glauben
        an IHN ohne Verdienst gerecht gesprochen. \nobreakword{(vgl. Römer 3,23-28)}
        \index[stichwort]{Begriffe!Gerechtigkeit/Gerechtsprechung/Gerechte/ \newline Rechtfertigung}\\
        - Jeder Mensch kommt schuldig zur Welt. \nobreakword{\nobreakword{(vgl. Psalm 51,7)}}\\
        - Ein Gläubiger darf bei verstorbenen Säuglingen die Hoffnung haben
        nach dem irdischen Leben wieder bei diesem Menschen zu sein, selbst
        wenn der Säugling zu Lebzeiten nicht die Möglichkeit hatte sich für
        oder gegen Gott zu entscheiden. \nobreakword{(vgl. 2. Samuel 12,21-23)}\\
        - Gott ist vollkommen gerecht. \nobreakword{(vgl. 5. Mose 32,4)}\index[stichwort]{Begriffe!Gerechtigkeit/Gerechtsprechung/Gerechte/ \newline Rechtfertigung}\\
        - Gott kann keine Gemeinschaft mit Sündern haben, sodass es zwischen
        IHM und den Menschen eine Trennung geben musste. \nobreakword{\nobreakword{(vgl. Jesaja 59,2)}}\\
        - Gott möchte eine persönliche Beziehung zu uns Menschen haben. \nobreakword{(vgl.
        Johannes 17,3)}\\

【问题讨论】:

  • 所有名字都至少有 3 个字母吗?此外,从您的问题中还不清楚您的输入是什么以及您想要的输出是什么......
  • @beerbajay 我已经编辑了我的问题。
  • 是不是'2. Könige' => '2Köng'。如果是这样,则不能使用正则表达式导出缩写形式。
  • 很好,@CoronA。在这种情况下,我的回答会产生 2Kön
  • @CoronA 我纠正了错字。

标签: regex


【解决方案1】:

正则表达式:

\\nobreakword\{\(vgl\.\s+(([0-9]*)\.\s+)?((\S\S\S)\S*)\s+([^)]*)\)\}

以及替换:

\\index[bibel]{@\1 \3!\\textit{\2\4 \5}}\0

On regex101 here.

不过,总的来说,这是在 Latex 中修复引用的一种糟糕方法。相反,您应该定义产生正确输出的函数,这样当您的需求发生变化时,您就有了一个集中的位置来编辑格式。

【讨论】:

    【解决方案2】:

    您的方法是正确的.. 除了一些修改。您可以使用:

    (\\nobreakword{\(vgl\.\s*((\d+)(?:\.\s+))?((.{3}).+?\b)[\s\S]*?([a-z0-9.,-]+)\)})
    

    并替换为\\index[bibel]{@$2$4!\\textit{$3$5 $6}}$1

    DEMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-30
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多