मैं एक Neo4j डेटाबेस में नोड्स से मिलान करने की कोशिश कर रहा हूं। नोड्स में "नाम" नामक एक संपत्ति होती है और मैं इसका मिलान करने के लिए साइफर में नियमित अभिव्यक्ति का उपयोग कर रहा हूं। मैं केवल पूरे शब्दों से मेल खाना चाहता हूं, इसलिए यदि मैं स्ट्रिंग "जावा" की आपूर्ति करता हूं तो "जावास्क्रिप्ट" मेल नहीं खाया जाना चाहिए। यदि मिलान करने वाली स्ट्रिंग कई शब्दों का है, यानी "जावा स्क्रिप्ट" मैं दो अलग-अलग प्रश्न पूछूंगा, एक "जावा" और एक "स्क्रिप्ट" के लिए।नियमित अभिव्यक्ति के साथ साइफर क्वेरी
match (n) where n.name =~ '(?i).*\\bMYSTRING\\b.*' return n
यह काम करता है, लेकिन ऐसा लगता है "+" या "#" कुछ विशेष वर्ण के साथ काम नहीं करता है:
यह वही है मैं अब तक है। तो मैं "सी ++" या "सी #" आदि की खोज नहीं कर सकता। उपरोक्त कोड में नियमित अभिव्यक्ति केवल शब्द सीमा के लिए \ b का उपयोग कर रही है। यह भी इससे बच रहा है ताकि यह सही तरीके से काम कर सके।
मैंने इस पोस्ट के कुछ संस्करणों की कोशिश की: regex to match word boundary beginning with special characters लेकिन यह वास्तव में काम नहीं किया, शायद मैंने कुछ गलत किया।
मैं इस काम को साइफर और नियो 4j में विशेष पात्रों के साथ कैसे बना सकता हूं?
यह सामान्य रूप से काम करेगा, लेकिन \ b शब्द सीमा केवल अल्फान्यूमेरिकल वर्णों के साथ संचालित होती है, इसलिए यह "C++" (जो या तो एक विशेष चरित्र के साथ शुरू होती है या समाप्त होती है) से मेल नहीं खाती है। यह "सी ++ सी" जैसे गुणों से मेल खाता है क्योंकि यह "सी" के साथ समाप्त होता है। –
@ ओविंद अपडेट किया गया। – Taemyr
यह काम कर रहा था, लेकिन अगर आप अपडेट किए गए उत्तर में उल्लेख करते हैं तो स्ट्रिंग से पहले या बाद में वर्ण होने पर यह मेल खाता था। क्या इसे केवल पूरे शब्दों पर मेल करने का कोई तरीका है? अद्यतन अद्यतन नहीं होगा '(? I)। * सी \\ + \\ +। *'? –