所以我有一个这样的字符串:
@array = ('a', 1, 2, 3, 4, 'b', 6, 7, 8);
%hash = ('a' => [1,2,3,4], 'b' => [6,7,8]);
我可以选择三个引号:
var a = " 'asdf'+'asdf'+'we' + 1";
如何使用正则表达式在字符串中选择单引号(')的开头? 还有一个单独的正则表达式来选择单引号的结尾(')?正则表达式可以实现吗?我将用<<。
替换引号的开头最终字符串看起来像
'([^']*)'
答案 0 :(得分:1)
当您只需要替换某个模式的某个部分时,请在需要保留的部分周围使用捕获组,然后匹配(并消耗)您需要删除的部分。
var a = " 'asdf'+'asdf'+'we' + 1";
console.log(
a.replace(/'([^']*')/g, '<<$1')
);
// And, to replace both ' in one go (notice the ) shift to the left):
console.log(
a.replace(/'([^']*)'/g, '<<$1>>')
);
下面,
'
- 匹配并使用'
([^']*')
- 匹配并捕获到第1组零个或多个字符,而不是'
([^']*
),然后是'
。替换模式中的$1
是在找到有效匹配后存储在组1中的内容的占位符。([^']*)
- 仅将'
以外的任何0 +字符捕获到第1组中,因此最终的'
会被匹配并消耗,$1
中将会丢失占位符内容。另请参阅regex demo 1和regex demo 2。