Niekert は、言及されていない簡単な解決策があったため、この質問を復活させました。この状況は、状況 s1、s2、s3 などを除いて、パターンの一致 (または置換)と非常によく似ています。
簡単な正規表現は次のとおりです。
{[^}]+}|( )
交互の左側は、完全な{ ... }
波括弧に一致します。これらの一致は無視されます。右側はスペースをグループ 1 に一致させてキャプチャします。左側の式では一致しなかったため、これらが正しいスペースであることがわかります。
このプログラムは、正規表現の使用方法を示しています (オンライン デモのペインで結果を参照してください)。
<script>
var subject = "insert 'hello world' into {This is a test}";
var regex = /{[^}]+}|( )/g;
var match = regex.exec(subject);
replaced = subject.replace(regex, function(m, group1) {
if (group1 == "" ) return m;
else return "SplitHere";
});
splits = replaced.split("SplitHere");
document.write("*** Splits ***<br>");
for (key in splits) document.write(splits[key],"<br>");
</script>
参照
s1、s2、s3... の状況を除いて、パターンを一致させる (または置き換える) 方法