次のコードを使用して、ページ パスが特定の式で終わるデータベースからすべてのドキュメントを取得しようとしています。
query.put(pagepath, new BasicDBObject(
"$regex", "/(" +expression+ ")$/"));
式は「.html」、「.JSON」、「contact/」、「/」などの値に置き換えられます... https:/ /regex101.com/動作し、リンクの 1 つが少なくとも一致します。
次のコードを使用して、ページ パスが特定の式で終わるデータベースからすべてのドキュメントを取得しようとしています。
query.put(pagepath, new BasicDBObject(
"$regex", "/(" +expression+ ")$/"));
式は「.html」、「.JSON」、「contact/」、「/」などの値に置き換えられます... https:/ /regex101.com/動作し、リンクの 1 つが少なくとも一致します。
文字列内の特殊文字expression
および潜在的な改行記号を説明するソリューションは次のとおりです。
query.put(pagepath, new BasicDBObject("$regex", "(?s).*" + Pattern.quote(expression) + "$"));
ポイントは次の4点です。
.*
、expression
(?s)
するように DOTALL 修飾子を渡す必要があります.
Pattern.quote
するようにする必要がありますexpression
[
(
、)
前後に移動する必要はありません。expression
これが解決策です:query.put(pagepath, new BasicDBObject("$regex", ".*(" + expression + ")$"));