2009-06-02 19 views
44

मैं जानना चाहता हूं कि नियमित अभिव्यक्तियों में टिल्ड ऑपरेटर का क्या अर्थ है। ~नियमित अभिव्यक्तियों में टिल्ड ऑपरेटर

कहा जाता है कि =~ का मतलब है कि यह नियमित अभिव्यक्ति के खिलाफ इस चर चलाने एक पर्ल ऑपरेटर है:

if (!preg_match('~^\d{10}$~', $_POST['isbn'])) { 
    $warnings[] = 'ISBN should be 10 digits'; 
} 

मैं इस दस्तावेज़ समझा टिल्ड क्या मतलब पाया:

मैं इस बयान की है।

लेकिन मेरी नियमित अभिव्यक्ति में दो टिल्डे ऑपरेटर क्यों हैं?

उत्तर

52

इस मामले में, यह सिर्फ एक डेलीमीटर के रूप में उपयोग किया जा रहा है।

आम तौर पर, PHP में, नियमित अभिव्यक्ति के पहले और आखिरी वर्ण "मिलान करने वाले" होते हैं जो मिलान करने वाले भाग की प्रारंभ और समाप्ति स्थिति को चिह्नित करते हैं (यदि आप अंत में संशोधक जैसे अंत में संशोधक जोड़ना चाहते हैं)

आम तौर पर PHP एक स्ट्रिंग में पहले वर्ण से इसे बाहर करता है जो एक नियमित अभिव्यक्ति के रूप में होता है, जो दूसरे डेलिमीटर के रूप में दूसरे मौके से मेल खाता है। यह उपयोगी है जहां टेक्स्ट में सामान्य डिलीमीटर की घटना होती है (उदाहरण के लिए, टेक्स्ट में / के अवसर) - इसका मतलब है कि आपको अजीब चीजें करने की ज़रूरत नहीं है। "//" के लिए

मिलान सीमांकक के साथ "#"

#//#

की सीमांकक के साथ " //" के लिए सेट करने के लिए " /"

/\/\//

मिलान

+1

आईसी, मैं/delimiter के लिए उपयोग किया जाता है, इसलिए मैं ~ delimiter के साथ थोड़ा उलझन में था। स्पष्टीकरण देने के लिए धन्यवाद। –

+0

यह केवल पीसीआरई http://docs.php.net/manual/en/book.pcre.php पर लागू होता है और पॉज़िक्स ईआरई नहीं http://docs.php.net/manual/en/book.regex.php – Gumbo

6

इस मामले में, इसका कोई मतलब नहीं है। यह बस आपके पैटर्न की शुरुआत और अंत को सीमित कर रहा है।

preg_match("/pattern/opt", ...); 

, के उपयोग हालांकि "/": PCRE (पर्ल कम्पैटिबल रेग्युलर एक्सप्रेशंस) है, जो कि तुम क्या PHP में preg_ * के साथ उपयोग कर रहे हैं में, पैटर्न अभिव्यक्ति विकल्पों ओर के साथ इनपुट, इसलिए की तरह है क्योंकि इस मामले में डिलीमीटर मनमाना है - हालांकि आगे स्लैश लोकप्रिय है, इसे किसी भी चीज़ से बदला जा सकता है। आपके मामले में, यह tilde है।

+0

ओह, ठीक है .. मुझे पुस्तक से नियमित अभिव्यक्ति मिली .. उन्होंने यह समझाया कि इसका क्या अर्थ है। तो थोड़ा उलझन में था। मैं सिर्फ चीजों को स्पष्ट करने की कोशिश कर रहा था क्योंकि मैं उलझन में हूं। धन्यवाद! –

+0

'/' लोकप्रिय है क्योंकि यह नियमित रूप से पर्ल नियमित अभिव्यक्तियों के लिए मानक डेलीमीटर है, जो कि preg के लिए खड़ा है;) –

संबंधित मुद्दे