正则表达式:找出符号是否用相同的符号包围

时间:2016-09-25 08:45:21

标签: javascript regex

我需要一个JS正则表达式,它可以找到没有任何相同单词字符包围的单词字符的匹配项。例如,如果我们要查找 b ,它应匹配 aba ubu ,而不应 abc BCA

给定字符串中的任何字符都是小写英文字母,这些字母是备用的(例如我们可以 ababa 但不能 bbaa )。

我尝试使用这样的外观:

/b(?=a)/g

但我无法弄清楚如何替换 a 以便我们知道它与b左侧和右侧的符号相同。任何见解都表示赞赏。

2 个答案:

答案 0 :(得分:2)

使用以下正则表达式:

(.)(b)(?=\1)

您可以匹配这些类型的角色。如果你需要操纵包围的b,那么你可以这样编码:

> "aabb aba".replace(/(.)(b)(?=\1)/g, function(match, p1, p2) {
    return p1 + 'c';
});
< "aabb aca"

答案 1 :(得分:0)

您可以执行以下操作;

"abaubuiyiatbzsgegestsabn"

然后,如果您想获得"geg"中的所有隔行扫描模式,您不仅应该获得"ege",还应该获得var str = "abaubuiyiatbzsgegestsabn".split(/(\w)(?=[^\1]\1)/g) .slice(1) .reduce((p,c,i,a) => i&1 ? (p[p.length-1] += (a.slice(i) .join("") .slice(0,2)),p) : p.concat([[c]]) ,[]); console.log(str);

ffmpeg -i in.mkv -vf scale=hd720 -map 0 -c copy -c:v libx265 out.mkv