0

<とではない a が>含まれていない場合に分割される正規表現を作成しようとしています。これが私が意味することです:q\q

       split           nope             split
         v              v                 v
test1< test2 > test3 <tesqt4> test5 < tes\qt6>

先読みや後読みを使用せずにこれを行いたいです。

ここに私がこれまでに持っているものがありますが、まだ機能していません^<(?:[^\\][^q]*)*>

4

1 に答える 1

3

あなたはかなり近いです。これを試して

<([^>q\\]*(\\[^>])?)*>

これにより、無効であるなどのケースも認識さ<test\\q>れ、不正な形式の が拒否されます<test\>。後者を受け入れる場合は、[^>]をワイルドカードに変更し.ます。

終了タグ、無効なq、またはエスケープするまで何でも許可することで機能し\ます。次に、次のビットが有効なエスケープ シーケンスであるかどうかをチェックし、最後のビットが見つかるまで「ループ」します。>

更新:コメントで指摘されているように、これはより良いバージョンです

<(\\[^>]|[^\\>q])*>

Chrome では約 2 倍の速さです ( http://jsperf.com/nested-regex-quantifiers-vs-or )。文字単位のレベルで動作するため、理解しやすいかもしれません。

于 2013-03-18T00:45:24.320 に答える