पते के रूप में पीओ बॉक्स का पता लगाने के लिए यह मेरी वर्तमान अभिव्यक्ति है:
^\s*((P(OST)?.?\s*(O(FF(ICE)?)?)?.?\s+(B(IN|OX))?)|B(IN|OX))
यह POBox
और P.O.Box
(जहां B से पहले कोई जगह नहीं है) को छोड़कर मेरी जरूरत की हर चीज से मेल खाता है। मैं इसे शामिल करने के लिए अपनी अभिव्यक्ति को कैसे समायोजित कर सकता हूं?
परीक्षण के लिए लिंक: https://regex101.com/r/vKDiWW/1
2 जवाब
जहाँ B . से पहले कोई स्थान नहीं है
ठीक है, आपकी अभिव्यक्ति में \s+
है और इस पैटर्न के लिए एक या अधिक रिक्त स्थान की आवश्यकता है।
\s*
या [[:space:]]*
का प्रयोग करें:
^\s*((P(OST)?.?\s*(O(FF(ICE)?)?)?.?\s*(B(IN|OX))?)|B(IN|OX))
देखें प्रमाण
मैं यह मानने जा रहा हूं कि आपका मतलब शाब्दिक बिंदुओं से मेल खाना है और किसी भी गैर-न्यूलाइन चरित्र से मेल नहीं खाता है - तो अब आप देखेंगे कि पैटर्न में बिंदु बच निकले हैं।
मैंने आपके आवश्यक तर्क की सराहना करने के लिए बिंदुओं को पैटर्न में स्थानांतरित किया और मैंने कुछ अनावश्यक कोष्ठक भी हटा दिए हैं। स्पष्टीकरण के लिए मेरी इनलाइन टिप्पणियाँ देखें।
पैटर्न:
~^\s*(P(\.|OST)?\s*(O(\.|FF(ICE)?)?)?\s*(B(IN|OX))?|B(IN|OX))~i
रेगेक्स (डेमो)
^
\s*
(
P(\.|OST)? #P or P. or POST
\s*
(O(\.|FF(ICE)?)?)? #nothing or O or O. or OFF or OFFICE
\s*
(B(IN|OX))? #nothing or BIN or BOX
|
B(IN|OX)
)
सभी वैकल्पिक रिक्त स्थान और केस-असंवेदनशीलता की उपेक्षा करते हुए, उपरोक्त पैटर्न 45 निम्नलिखित मिलान करेगा:
BIN
BOX
P
PBIN
PBOX
PO
POBIN
POBOX
PO.
PO.BIN
PO.BOX
POFF
POFFBIN
POFFBOX
POFFICE
POFFICEBIN
POFFICEBOX
P.
P.O
P.OBIN
P.OBOX
P.O.
P.O.BIN
P.O.BOX
P.OFF
P.OFFBIN
P.OFFBOX
P.OFFICE
P.OFFICEBIN
P.OFFICEBOX
POST
POSTBIN
POSTBOX
POSTO
POSTOBIN
POSTOBOX
POSTO.
POSTO.BIN
POSTO.BOX
POSTOFF
POSTOFFBIN
POSTOFFBOX
POSTOFFICE
POSTOFFICEBIN
POSTOFFICEBOX
संबंधित सवाल
नए सवाल
php
PHP एक व्यापक रूप से उपयोग किया जाता है, उच्च-स्तरीय, गतिशील, वस्तु-उन्मुख, और व्याख्या की गई स्क्रिप्टिंग भाषा मुख्य रूप से सर्वर-साइड वेब विकास के लिए डिज़ाइन की गई है। PHP भाषा के बारे में सवालों के लिए इस्तेमाल किया।
POST. OFFICE. BIN
औरP OFF.
मान्य हैं, आदि)