名詞またはadjまたはadvで始まるテキストを<を満たすまで検索したいと思います。noun、 adj、およびadvは、それらと<の間に再び現れてはなりません。この正規表現が機能することを期待していましたが、失敗しました。どうすればこれを機能させることができますか?
(noun|adj|adv)[^\1]+?<
名詞またはadjまたはadvで始まるテキストを<を満たすまで検索したいと思います。noun、 adj、およびadvは、それらと<の間に再び現れてはなりません。この正規表現が機能することを期待していましたが、失敗しました。どうすればこれを機能させることができますか?
(noun|adj|adv)[^\1]+?<
前の解決策は半分正しいですが、どれも正しくありませんでした。ロバートはそれを完全に間違えました。@Benoit は正しいことに近づきましたが、それでも間違っていました。理由は次のとおりです: http://regex101.com/r/qI7hA6 -- エンジンは、先読みが失敗しない別の位置で一致するだけです。不要な後方参照も設定します。その上、テキストで名詞/副詞/副詞を許可します。
これがより良い解決策です:http://regex101.com/r/nL8lL7
/^|\G(?:noun|adj|adv)((?:(?!noun|adj|adv).)+)</gm
これがうまくいくことを願っています。探しているものではない場合は、明確にしてください。それに応じて表現を調整します。
幸運を。
[...]
ブラケット構文は、個々の文字のみを検索します。
ここでは、否定的なアサーションを使用する必要があります: ((?!\1).)+
could do it. 正規表現構文が perl/ecmascript と互換性がある場合。
(noun|adj|adv)((?!\1).)+<