Regex 查找特定引用模式并用正则表达式替换它

Regex 查找特定引用模式并用正则表达式替换它,regex,replace,find,Regex,Replace,Find,对于按时间顺序排列的索引() 我想替换以下条目(以及我文档中更多的此类条目),以便将前三个字母(数字,如果存在,加上)写在第一个括号中。第二个括号必须以数字开头,数字后面可以跟其他数字。示例: \index[bibel]{Psalm!Psalm 102,26} => \bibelindex{Psa}{102,26} \index[bibel]{1. Johannes!1. Johannes 4,16} => \bibelindex{1Joh

对于按时间顺序排列的索引() 我想替换以下条目(以及我文档中更多的此类条目),以便将前三个字母(数字,如果存在,加上)写在第一个括号中。第二个括号必须以数字开头,数字后面可以跟其他数字。示例:

\index[bibel]{Psalm!Psalm 102,26}                 => \bibelindex{Psa}{102,26}
\index[bibel]{1. Johannes!1. Johannes 4,16}       => \bibelindex{1Joh}{4,16}
\index[bibel]{Offenbarung!Offenbarung 21,16b}     => \bibelindex{Off}{21,16b}
\index[bibel]{Habakuk!Habakuk 3,17f.}             => \bibelindex{Hab}{3,17f.}
\index[bibel]{Kolosser!Kolosser 4,3-6}            => \bibelindex{Kol}{4,3-6}
\index[bibel]{1. Korinther!1. Korinther 15,20-28} => \bibelindex{1Kor}{15,20-28}
\index[bibel]{1. Korinther!1. Korinther 15,50.51} => \bibelindex{1Kor}{15,50.51}
\index[bibel]{Psalm!Psalm 2,2.7.9.17.19.23}       => \bibelindex{Psa}{2,2.7.9.17.19.23}
\index[bibel]{Lukas!Lukas 21,11.16-19}            => \bibelindex{Luk}{21,11.16-19}
\index[bibel]{Markus!Markus 24,35-37.40-43.45f.}  => \bibelindex{Mar}{24,35-37.40-43.45f.}
是否可以使用单个搜索模式+带有正则表达式的单个替换模式在一个步骤中替换所有示例

编辑

编辑1:我忘了提到我还有其他不应更改的文本:

\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}
编辑2:我忘了提到,括号内还有ä/ö/ü个字符:

\index[bibel]{Römer!Römer 6,14.15}\nobreakword{(Römer 6,14.15)} => \bibelindex{Röm}{6,14.15}\nobreakword{(Römer 6,14.15)}
\index[bibel]{Matthäus!Matthäus 15,29-31}\nobreakword{(Matthäus 15,29-31)} => \bibelindex{Mat}{15,29-31}\nobreakword{(Matthäus 15,29-31)}
编辑3:是否也可以包括数字部分写入下一行的模式(由于复制粘贴),文本和数字之间有回车符(空格/许多空白字符),例如:

\index[bibel]{1. 
Korinther!1. Korinther 15,20-28} => \bibelindex{1Kor}{15,20-28}

\index[bibel]{1. Korinther!1. 
Korinther 15,20-28} => \bibelindex{1Kor}{15,20-28}

\index[bibel]{1. Korinther!1. 
    Korinther 15,20-28} => \bibelindex{1Kor}{15,20-28}

\index[bibel]{1. Korinther!1. Korinther 
        15,20-28} => \bibelindex{1Kor}{15,20-28}
编辑4:

事件虽然正则表达式页面工作得很好,但不幸的是有2秒的限制,这对我来说是不够的,因为我有一个包含3000行和大约200个条目的文本要替换

*!(\d?)

使用Windows的免费软件“Notepad++”会导致:“查找:无效正则表达式”


你知道一个在Windows下工作的免费软件,或者一个使用正则表达式搜索和替换功能的普通程序的正则表达式吗?

你可以使用
\\index\[bibel\]{((\d+)(:\.\s+)))(.{3})[\s\s]*?([a-z0-9.-]+])
来查找匹配项

并将匹配项替换为
\\bibelindex{$2$3}{$4}

编辑:根据您的编辑1、2和3更新正则表达式

注意:如果使用多行进行测试,可以通过更改右上角的设置来增加regex101上的
最大执行时间


请参见

请说明您希望输出的样子。它应该是=>