我想将文本模式\nobreakword{(....)}
替换为\href{http://www.bibleserver.com/text/SLT/....}{\nobreakword{(....)}}
,其中....代表非特定文本模式,其中包含ä,ö,ü,数字和ENTER(新行) ))
输入:
\nobreakword{(vgl. 1. Johannes 4,16)}
\nobreakword{(Daniel 4,15.17.32f.)}
\nobreakword{(2. Könige 7,7)}
\nobreakword{(vgl. Römer 2,2)}
有时输入....在两行上用ENTER打破:
\nobreakword{(
vgl. 2. Könige 7,7)}
\nobreakword{(vgl. 2.
Könige 7,7)}
输出:
\href{http://www.bibleserver.com/text/SLT/1. Johannes 4,16}{\nobreakword{(vgl. 1. Johannes 4,16)}}
\href{http://www.bibleserver.com/text/SLT/Daniel 4,15.17.32f.}{\nobreakword{(Daniel 4,15.17.32f.)}}
\href{http://www.bibleserver.com/text/SLT/2. Könige 7,7}{\nobreakword{(vgl. 2. Könige 7,7)}}
\href{http://www.bibleserver.com/text/SLT/Römer 2,2}{\nobreakword{(vgl. Römer 2,2)}}
如果可能,我想避开网址中的vgl.
。
我可能必须使用一个识别以\nobreakword{(
开头并以)}
结尾的组。
是否可以使用https://regex101.com?
此问题与旧帖相比有一些相似之处,但现在希望删除网址中的vgl.
:Find and replace a specific reference pattern by a regular expression (no.2)
答案 0 :(得分:1)
您可以使用以下内容进行匹配:
(\\nobreakword{\(vgl\.\s*((\d+)(?:\.\s+))?((.{3}).+?\b)[\s\S]*?([a-z0-9.,-]+)\)})
并替换为:
/\href{http://www.bibleserver.com/text/SLT/$2$4 $6}$1
请参阅DEMO
修改:如果对vgl
没有限制,您可以使用:
(\\nobreakword{\((?:vgl\.)?\s*((\d+)(?:\.\s+))?((.{3}).+?\b)[\s\S]*?([a-z0-9.,-]+)\)})