0

私の小さなプロジェクトで正規表現を機能させるのに苦労しています。<>\ 記号が前に付いていない場合にのみ、記号内の何かに一致する正規表現を手伝ってくれる人はいますか?

例えば:

<Escaped characters \<\> are right in the middle of this sentence.>, <Here is another sentence.>

一致している必要があります

1: Square brackets \<\> are right in the middle of this sentence.
2: here is another sentence.

これまで私は管理してきました

/<([^\\][^>]*?)>/ig

しかし、それは

1: Escaped characters \<\
2: Here is another sentence.

私は何を間違っていますか?:(

4

4 に答える 4

1

私はこれを使用します:

/<((?:[^\\>]+|\\.)*)>/
于 2009-08-26T08:45:08.300 に答える
1

クリムゾンの答えは、テストとして使用してRegex Powertoyでテストする際に機能しません<Escaped characters \<\> are right in the middle of this sentence.>, <Here is another sentence.>が、これは機能するようです:

/<(?<!\\<).*?>(?<!\\>)/gi

私に2つの一致を与えます: <Escaped characters \<\> are right in the middle of this sentence.>そして<Here is another sentence.>

編集:ガンボが一致しなかったと言った文字列を調べました。regex.powertoy.org で一致させるのに問題はありません。

代替テキスト http://img362.imageshack.us/img362/3227/regexpowertoyorg.png

テストでは、元の投稿された正規表現を次のように変更しました。/(?<!\\)<(.*?)(?<!\\)>/giこれはより効率的です(プローブが少ない)。

また、regex.powertoy.org の出力で、4 番目の文字列 ( \<hello <match\<this\>> but not this\> looks odd... the printed replacement is justmatch but the match detail clearly shows that the match is correct;match\ . But I also notices that the first and third test string replacements don't print the "`" が山かっこをエスケープしていることに気付きました。少し (完全ではありませんが) 遊んだ後、これはテキストの表示に問題があると思います。 javascript を使用すると、エスケープされた山かっこはエスケープ文字を出力せず、空でない山かっこはまったく出力されません.これは、javascript がそれを HTML として認識しているためだと思います.そう;この正規表現は機能していると思います.ただし、オフラインでテストする必要があります。

于 2009-08-26T06:52:39.960 に答える
0

必要なのは後読み演算子です。ここでそれらについて読んでください:

http://www.perl.com/pub/a/2003/07/01/regexps.html

そして、必要な式は次のとおりです。

/<(?!<\\).*>(?!<\\)/

上記の * 演算子は貪欲であるため、エスケープされた山括弧を含める必要があります /< />

編集:エスケープされた山かっこを一致させて返すことを想定しています。何か違うものが必要な場合は、明確にしてください - a) 入力文字列と b) 返される一致の簡潔な例を挙げてください

于 2009-08-26T06:26:13.540 に答える
0

これを試して

/<[^\\]([^>]+)>/
于 2009-08-26T06:28:58.450 に答える