我没有在regex的文档中找到解决当前问题的方法。我使用的是javascript,html。我的代码是这样的:
var text = 'This [close](animal) is a dog';
我想使用regex:
'This {animal} is a dog';
我的意思是,我想用{和}替换"丢失">。我知道,有一个解决方案像:
var res = text.replace('[close](','{').replace(')','}');
但就我而言,我有很多规则,我不想重复这一行。有时我会使用其他替换,如'[xxxxx]'。知道吗?非常感谢。
您可以使用
var text = 'This [close](animal) is a dog';
console.log(text.replace(/[[^][]*](([^()]*))/g, '{$1}'));
请参阅regex演示。
详细信息
[
-[
字符[^][]*
-除[
和]
之外的0个或更多个字符](
-一个](
子串([^()]*)
-捕获组1:除(
和)
之外的任何0个或多个字符)
-一个)
字符
{$1}
替换是用大括号括起来的捕获组的内容。
如果在[...]
中只能有两个值——close
和open
,并且用{...}
替换close
,用}...{
替换open
,则可以使用
var text = '[open](animal)This [close](animal) is a dog';
console.log(text.replace(/[(open|close)](([^()]*))/g, function($0, $1, $2) {
return $1==='close' ? '{'+$2+'}' : '}'+$2+'{';})
);
别忘了,您可以在Array.prototype.replace
中传递自定义正则表达式。在您的情况下,它将是text.replace(/[close](/g,'{')
。你的问题的完整解决方案看起来像:
var res = res.replace(/[w+]((.*))/, (a, b) => {
console.log(a, b);
return `{${b}}`;
});
.*
周围的括号用于"捕获"变量b
内的动物
谢谢Wiktor,我通过你所说的找到了解决方案
var res0 = text.replace(/[close](([^()]*))/g, '{$1}');
var res1 = text.replace(/[open](([^()]*))/g, '}$1{');
对不起,如果我错了,我不习惯英语表达,所以:-(