私がやろうとしていること:特定のエスケープされていない文字を囲む最も内側のエスケープされていない角括弧を削除します(エスケープ\
です)
input:[\[x\]]\]\[[\[y\]]
yの周りの角かっこを[\[x\]]\]\[\[y\]
探すときの出力:xの周りの角かっこを探すときの出力:\[x\]\]\[[\[y\]]
つまり、特定の文字の周りのエスケープされていない括弧のセットのみを削除します。
私はこれを(yに対して)試しましたが、それは最初のエスケープされていない(xの前)と最後の。Regex.Replace(input, @"(?<!\\)\[(.*?(?<!\\)y.*?)(?<!\\)\]",@"$1"
と一致するようです。ワイルドカードを否定文字クラスに置き換えて除外および除外できると考えましたが、実際に否定する必要があるのは、これらのエスケープされていないバージョンであり、否定文字クラスのように否定の後ろ姿を取り入れようとすると、何も一致しないようです。まったく。[
]
.
[
]
(?<!\\)
時間と労力をよろしくお願いします。
編集:
明確にするために、エスケープされていない角括弧の内容は、関心のあるエスケープされていない文字()が含まれている限り、何でもかまいません(別のエスケープされていない角括弧を除くy
)。角かっこの内容はすべてそのままにしておく必要があります。