2009-12-04 19 views
8

जब मैंने कुछ खोजा, तो मुझे इस साइट में एक उत्तर दिया गया प्रश्न मिला। जवाब में से 2 उनके जवाब पर/([^.]*).(.*)/ मतलब क्या है?

/([^.]*)\.(.*)/

होते हैं। प्रश्न Find & replace jquery पर स्थित है। मैं जावास्क्रिप्ट में नौसिखिया हूँ, इसलिए मुझे आश्चर्य है, इसका क्या मतलब है? धन्यवाद।

+4

मुझे लगता है कि मैंने एक कॉमिक स्ट्रिप पर एक बार बदनामी देखी थी। या, यदि आप चाहें, एक नियमित अभिव्यक्ति खोज और प्रतिस्थापन के लिए उपयोग की जाती है। – xpda

+1

@ xpda +1 मुझे शुक्रवार की सुबह – MrFidge

उत्तर

3

यह एक नियमित अभिव्यक्ति है जो लगभग एक स्ट्रिंग की खोज करती है जिसमें अवधि नहीं होती है, इसके बाद अवधि होती है, और उसके बाद किसी भी वर्ण वाली स्ट्रिंग होती है।

8

यह regular expression है (यह गैर-अवधि से मेल खाता है, इसके बाद किसी भी अवधि के बाद (सोचें "file.ext"))। और आपको उनके बारे में जानने के लिए चलना चाहिए, चलना नहीं चाहिए। यह स्पष्ट करना कि यह विशेष नियमित अभिव्यक्ति कैसे काम करती है, आपकी मदद करने वाली नहीं है क्योंकि आपको सरल शुरू करने की आवश्यकता है। तो regex tutorial से शुरू करें और Mastering Regular Expressions चुनें।

+1

+1 पर कहने के लिए "रेगेक्स के बारे में जानें" कहने के लिए +1। –

+1

-1 समूहों का उल्लेख नहीं करने के लिए, इस अभिव्यक्ति का पूरा बिंदु। – UncleO

+0

@uncleo: ठीक है, लेकिन वह उनके प्रश्न का मुद्दा नहीं था। उन्हें यह भी एहसास नहीं हुआ कि यह एक नियमित अभिव्यक्ति थी इसलिए इस विशेष नियमित अभिव्यक्ति की जटिलताओं को समझाते हुए वह उनकी मदद नहीं करेगा। – jason

4

किसी डॉट को छोड़कर कुछ भी, उसके बाद किसी भी बिंदु के बाद।

आप regexpal

2

एक रेगुलर एक्सप्रेशन है कि पर regex'es परीक्षण कर सकते हैं। यदि आप उनका सही उपयोग करते हैं तो नियमित अभिव्यक्ति शक्तिशाली उपकरण होते हैं।

वह विशेष रेगेक्स "file.ext" जैसा दिखने वाली स्ट्रिंग से फ़ाइल नाम और एक्सटेंशन निकालता है।

+0

या '.textfile' (पहला भाग वैकल्पिक है) – Amarghosh

+1

अंतिम भाग भी वैकल्पिक है। '। 'भी मिल जाएगा। और '........... 'पहले'। 'पर भी मिलेंगे। – eyelidlessness

+0

या 'मेकफ़ाइल' (एक्सटेंशन वैकल्पिक है) (लेकिन रेगेक्स उस से मेल नहीं खाएगा) – Thanatos

2

यह एक नियमित अभिव्यक्ति है जो एक स्ट्रिंग को दो भागों में विभाजित करती है: पहली अवधि से पहले सब कुछ, और शेष शेष। अधिकांश रेगेक्स इंजन (जावास्क्रिप्ट एक सहित) आपको स्ट्रिंग के उन हिस्सों को अलग से एक्सेस करने की अनुमति देता है (पहले भाग को संदर्भित करने के लिए $ 1 का उपयोग करके, और दूसरे भाग के लिए $ 2)।

27
/([^.]*)\.(.*)/ 

हमें इसे रद्द करने दें। शुरुआत और पिछला स्लैश delimiters हैं, और नियमित अभिव्यक्ति की शुरुआत और अंत चिह्नित करें।

फिर एक संश्लेषित समूह है: ([^.]*) अभिभावक केवल एक स्ट्रिंग को समूहबद्ध करने के लिए हैं। स्क्वायर ब्रैकेट्स "चरित्र समूह" को दर्शाता है, जिसका अर्थ है कि इस समूह के अंदर कोई भी चरित्र इसके स्थान पर स्वीकार किया जाता है। हालांकि, इस समूह को पहले वर्ण द्वारा ^ माना जाता है, जो इसके अर्थ को उलट देता है। चूंकि अस्वीकृति के बगल में एकमात्र चरित्र एक अवधि है, यह एक ऐसे चरित्र से मेल खाता है जो एक अवधि नहीं है। स्क्वायर ब्रैकेट्स के बाद * (तारांकन) है, जिसका अर्थ है कि स्क्वायर ब्रैकेट को शून्य या अधिक बार मिलान किया जा सकता है।

फिर हम \. पर जाते हैं। यह एक बच निकली अवधि है। नियमित अभिव्यक्तियों में अवधि का विशेष अर्थ होता है (जब बच निकला या चरित्र समूह में)। यह पाठ में एक शाब्दिक काल से मेल खाता है।

(.*) एक नया पैराथेसयुक्त उप-समूह है। इस बार, अवधि किसी भी चरित्र से मेल खाती है, और तारांकन का कहना है कि इसे कई बार दोहराया जा सकता है।

संक्षेप में, अभिव्यक्ति वर्णों का कोई अनुक्रम (जो एक अवधि नहीं है), उसके बाद एक ही अवधि के बाद, किसी भी चरित्र के बाद फिर से मिलती है।

संपादित करें: शॉर्टनिंग के बारे में हटाया गया हिस्सा, क्योंकि यह नियमित अभिव्यक्ति के अनुमानित उद्देश्य को हरा देता है।

+3

पठनीयता में वृद्धि से अधिक, इस प्रकार रेगेक्स के उद्देश्य को हरा देता है। जो पहली अवधि से पहले और बाद में स्ट्रिंग के हिस्सों को निकालने की संभावना है। –

+0

मुझे एहसास है कि यह पुराना है, लेकिन शायद यह उल्लेख करना चाहिए कि समूह शून्य वर्णों से भी मेल खाते हैं। अर्थात। वैध मिलान 'ए.बी', 'ए।', '। बी' और '।' हैं, समूह 'ए' और 'बी', 'ए' और '', '' और 'बी' हैं, और क्रमशः '' और ''। – MattJenko

-2

द।चरित्र लाइन ब्रेक वर्णों को छोड़कर \ r या \ n को छोड़कर किसी भी चरित्र से मेल खाता है।

^क्या यह (इस मामले में डॉट)

* का अर्थ है "शून्य या अधिक बार"

कोष्ठकों समूह और कब्जा, इस प्रकार

\ आप मैच के लिए अनुमति देता है नकारता एक विशेष चरित्र (जैसे डॉट या स्टार)

इसलिए ([^.]*) का मतलब है कि किसी भी लाइन ब्रेक शून्य या अधिक बार दोहराया जाता है (यह केवल कैरिज रिटर्न खाता है)।

इस (.*) हिस्सा (पंक्ति विराम को छोड़कर) वर्ण शून्य या अधिक बार के किसी भी स्ट्रिंग

और \. कोई वास्तविक डॉट मतलब

तो पूरी बात शून्य या अधिक लाइन के बाद टूट जाता है से मेल खाएंगे एक बिंदु के बाद किसी भी संख्या के पात्रों।

अधिक जानकारी और पर रेगुलर एक्सप्रेशन एक वास्तव में महान संदर्भ के लिए बाहर की जाँच: http://www.regular-expressions.info/reference.html

+0

[^।] कुछ भी लिखता है लेकिन एक शाब्दिक बिंदु चरित्र '।' । – UncleO

+0

क्या यह एक जावास्क्रिप्ट विशिष्ट वाक्यविन्यास है?^के बीच क्या अंतर है। तथा \। ? –

+1

@ जो Basirico: '\ .' एक शाब्दिक बिंदु से मेल खाता है,' ^। 'इस तरह की एक चरित्र वर्ग के अंदर' [^।] 'कुछ भी मेल खाता है जो ** ** ** एक शाब्दिक बिंदु नहीं है। –

1

यह कुछ उन्नत उपयोग के साथ एक नियमित अभिव्यक्ति है।

एक सरल संस्करण पर विचार करें: /[^.]*\..*/ जो बिना किसी कोष्ठक के उपरोक्त जैसा है। यह कम से कम एक डॉट के साथ किसी भी स्ट्रिंग से मेल खाएगा। जब कोष्ठक जोड़े जाते हैं, और एक मैच होता है, चर \1 और \2 में ब्रांड्स से मिलान किए गए भाग होंगे। पहले व्यक्ति के पहले बिंदु से पहले कुछ भी होगा। दूसरे भाग में पहले बिंदु के बाद सबकुछ होगा।

उदाहरण:

input: foo...bar 
\1: foo 
\2: ..bar 

input: .foobar 
\1: 
\2: foobar 
1

यह नियमित अभिव्यक्ति दो मिलते-जुलते भाव है कि पुनः प्राप्त किया जा सकता है उत्पन्न करता है।

दो भाग पहले बिंदु (जो खाली हो सकता है) से पहले स्ट्रिंग हैं, और पहले बिंदु के बाद स्ट्रिंग (जिसमें अन्य बिंदुएं हो सकती हैं)।

इनपुट पर एकमात्र प्रतिबंध यह है कि इसमें कम से कम एक बिंदु होता है। यह मैच "।" कुछ अन्य उत्तरों के विपरीत, लेकिन पुनर्प्राप्त समूह खाली हो जाएंगे।

0

यह एक नियमित अभिव्यक्ति है, जो मूल रूप से वर्णों का एक पैटर्न है जिसका उपयोग वर्णों के दूसरे पैटर्न का वर्णन करने के लिए किया जाता है। मैंने एक बार टेक्स्ट फ़ाइल के अंदर एक ईमेल पता खोजने के लिए regexps का उपयोग किया था, और इन्हें पाठ के बड़े हिस्से में पाठ के किसी भी पैटर्न को खोजने के लिए उपयोग किया जा सकता है बशर्ते आप regexp को सही तरीके से लिखें।

6

मूल: /([^.]*)\.(.*)/

स्प्लिट इस रूप में:
[1] ([^.]*): यह सिवाय . [ period ]
[2] \. सभी पात्रों से मेल खाते हैं कहते हैं: एक अवधि से मेल
[3] (.*): किसी भी चरित्र से मेल खाता है

तो यह बन जाता है [1] . [ period ] [2] सभी वर्णों से मिलान करें जब तक आपको .[ period ] नहीं मिलता है [3] सभी सी से मेल खाता है haracters।

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