की तुलना में जावा एपीआई से एक अलग जवाब मिलता है, मुझे अपना रेगेक्स गलत करना होगा।मोंगोडीबी रेगेक्स, मुझे कंसोल
कंसोल में मैं
db.triples.find({sub_uri: /.*pdf.*/ });
करते हैं और इच्छित परिणाम मिलता है।
मेरे जावा वर्ग इस तरह दिखता है, (मैं इनपुट = "पीडीएफ" की स्थापना की है):
public static List<Triple> search(String input){
DB db=null;
try {
db = Dao.getDB();
}
catch (UnknownHostException e1) { e1.printStackTrace(); }
catch (MongoException e1) { e1.printStackTrace(); }
String pattern = "/.*"+input+".*/";
System.out.println(input);
List<Triple> triples = new ArrayList<Triple>();
DBCollection triplesColl = null;
try {
triplesColl = db.getCollection("triples"); } catch (MongoException e) { e.printStackTrace();}
{
Pattern match = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("sub_uri", match);
// finds all people with "name" matching /joh?n/i
DBCursor cursor = triplesColl.find(query);
if(cursor.hasNext()){
DBObject tripleAsBSON = cursor.next();
Triple t = new Triple();
t.setSubject(new Resource((String)tripleAsBSON.get("sub_uri")));
System.out.println(t.getSubject().getUri());
triples.add(t);
}
}
return triples;
}
कंसोल से मैं 12 परिणाम प्राप्त के रूप में मैं, जावा कोड से मैं कोई परिणाम नहीं मिलना चाहिए।
मेरी समझ: अगर इनपुट = "पीडीएफ" मुझे लगता है कि मैंने जो किया है वह स्ट्रिंग पैटर्न = "/.*pdf.*/" के बराबर है - मुझे गलत होना पसंद है, जो मेरी परेशानियों को समझाएगा । – Ankur
धन्यवाद, आपका regex अच्छी तरह से काम करता है। – Ankur
@ अंकुर: आपकी धारणा सही है। बस जागरूक रहें कि यदि 'इनपुट' थे, तो 'ए + बी' कहें, आपका रेगेक्स टेक्स्ट 'xxxa + bxxx' से मेल नहीं खाएगा क्योंकि + रेगेक्स में + का विशेष अर्थ है। –