/ / MongoDB RegEx इंजन पूर्णता - php, regex, mongodb, यूनिकोड, शब्द-सीमा

MongoDB RegEx इंजन पूर्णता - PHP, regex, mongodb, यूनिकोड, शब्द सीमा

Mongo प्रलेखन के अनुसार यह PCRE का उपयोग करता हैइंजन, और PCRE यूनिकोड वर्णों के लिए b और w का समर्थन करते हैं, लेकिन RegEx का अनुसरण यूनिकोड के तार के साथ मेल नहीं खाता है, क्या इसके लिए कोई समाधान या वैकल्पिक वाक्यविन्यास है?

// in Mongo console:
db.col.find({word:/bpLb/});

// in PHP
(new Mongo())->db->col->find(["word"=>new MongoRegex("/bpLb/u")]);

उत्तर:

उत्तर № 1 के लिए 1

मैं "कोई भी दस्तावेज नहीं खोज सका जो MongoDB के पीसीआरई कार्यान्वयन का समर्थन करता है, लेकिन यदि इसमें शामिल है pL यूनिकोड चरित्र वर्ग के साथ-साथ लुक-फॉरवर्ड और लुक-ऑफ-असर्सेंस, फिर यूनिकोड-अवेयर रिप्लेसमेंट b होने वाला:

(?:(?=pL)(?<!pL)|(?!pL)(?<=pL))

मूलतः (?=pL)(?<!pL) मैच अगर अगले अक्षर एक अक्षर है जबकि पिछले एक नहीं है, जबकि (?!pL)(?<=pL) अगर पिछले वर्ण एक अक्षर है, लेकिन अगले एक से मेल नहीं खाता है।

बेशक, इस regexp को बहुत सरल बनाया जा सकता है यदि हम पहले से ही आस-पास के पात्रों के बारे में कुछ जान सकें। उदाहरण के लिए, यूनिकोड-जागरूक संस्करण bpL+b बस के रूप में लिखा जा सकता है:

(?<!pL)pL+(?!pL)