繁体   English   中英

正则表达式,替换两个子字符串之间的括号

[英]Regex, Replace brackets between two substrings

我对 Regex 不太好,我试图替换一组字符串中的两个字符。

我需要这个:

This is some variable text
<foo> some stuff <Hello World> other stuff <bar>

替换为:

This is some variable text
<foo> some stuff (Hello World) other stuff <bar>

编辑:在这个例子中,我想找到所有<> ,分别用()替换它们在<foo><bar>的较大字符串。

使用两个替换怎么样。 一个用于(<foo>)(.*?)(<bar>)和上什么被捕获由第二捕获组的回调函数,取代<(.*?)>($1)

s = s.replace(/(<foo>)(.*?)(<bar>)/g, (m0,m1,m2,m3) => m1+m2.replace(/<(.*?)>/g,'($1)')+m3);

在 tio.run 上查看这个 JS 演示

对于多行字符串,使用([\\s\\S]*?)而不是(.*?)跳过换行符(阅读更多)。

将此命令与正则表达式一起使用,如下所示:

perl -pe 's/(<foo>.*)<(.*)>(.*<bar>)/$1($2)$3/'

 console.log(`This is some variable text <foo> some stuff <Hello World> other stuff <bar>` .replace(/<\\w+>|([<>])/g, (m, c) => ({'<':'(', '>':')'}[c] || m)))

 console.log(`This is some variable text <foo> some stuff <Hello World> other stuff <bar>` .replace(/<(?!\\w+>)/g, "(") .replace(/>(?<!<\\w+>)/g, ")") )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM