Java で .jsp/.jspx 拡張子を持たない文字列を照合しようとしていますが、否定的な先読みパターンで多くの困難を抱えています。
一連の文字列が与えられた場合:
String string1 = "templateName";
String string2 = "some/path"
String string3 = "basic/filename/no/extension"
String string4 = "some/path/to/file.jsp"
String string5 = "alternative/path/to/file.jspx"
最後の2つではなく最初の3つに一致する正規表現を見つけようとしています。
否定的な先読みを持つ正規表現が機能すると思っていたでしょう。
元:
Pattern p = new Pattern.compile( "(.+)(?!\\.jsp[x]?)")
しかし、そのパターンは上記のすべての文字列に一致するようです。最初は、グループ 1 は貪欲すぎるのではないかと思ったので、(.+?) を試してみましたが、どちらも役に立ちません。
This SO Postは否定的な先読みを説明するのに非常に良い仕事をしていますが、残念ながら正しい組み合わせを見つけるのに役立っていません.
明らかな何かが欠けていますか?