一致する角かっこを定義する方法はありますか?たとえば、開き角かっこが[の場合、閉じかっこは}や>ではなく]でなければならない、と言います。
並べ替え。
EREは、説明した方法で閉じ括弧を開き括弧に一致させる方法を提供していません。(PREGマジックを使用することは可能かもしれませんが、それは他の誰かに任せる必要があります。)複数の正規表現を使用するか、単一の正規表現内に複数のアトムを含める必要があります。
単一の正規表現を使用する場合は、検出する括弧で囲まれた文字列のタイプと、その文字列の内容を判別する必要があると思います。コメントで述べたように、これはプログラミング言語で行う必要がありますが、少なくとも正規表現から必要なものを取得できます。
以下の正規表現では、文字列の各スタイルはREで「ブランチ」として表されます。ブランチはor-バー()で区切られ|
ます。わかりやすくするために、すべての文字列はであると想定しています[:alnum:]
。コンテンツを指定していないため、特定の要件に合わせて調整する必要があります。
/(\[)([[:alnum:]]+)\]|(\()([[:alnum:]]+)\)|(\{)([[:alnum:]]+)\}/
↑ ↑ ↑ ↑
$1 $2 divider divider
各ブランチでは、最初の文字が丸括弧で囲まれているため、「アトム」になっていることに注意してください。後方参照のようにこのアトムを参照するには、コードが必要です。2番目のアトムは内側のストリングです。さて...私のJavaScriptは、たとえばベーキングスキルほど強力ではありませんが、これは始まりかもしれません。
String.prototype.bracketstyle = function() {
var re = /(\[)([:alnum:]+)\]|(\()([:alnum:]+)\)|(\{)([:alnum:]+)\}/;
return this.replace(re,"$1");
}
String.prototype.innerstring = function() {
var re = /(\[)([:alnum:]+)\]|(\()([:alnum:]+)\)|(\{)([:alnum:]+)\}/;
return this.replace(re,"$2");
}
これらを1つの関数に組み合わせたり、関数にせずに別の方法で使用したりできると思いますが、理解できます。