通过正则表达式查找并替换特定的参考模式(no.2)

时间:2015-04-19 16:14:17

标签: regex

今天,我很高兴我在这里找到了第一篇文章的解决方案: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)}\\

2 个答案:

答案 0 :(得分:2)

正则表达式:

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

替换:

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

On regex101 here.

一般来说,这是修复Latex中引用的一种可怕方法。您应该定义生成正确输出的函数,这样您就可以在需求发生变化时集中编辑格式。

答案 1 :(得分:2)

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

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

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

请参阅DEMO