2015-09-25 8 views
5

में प्रश्न चिह्न और एक्स का अर्थ मैं एटम के सिंटैक्स हाइलाइटिंग/व्याकरण नियमों को सीखने की कोशिश कर रहा हूं, जो जेएस नियमित अभिव्यक्तियों का भारी उपयोग करते हैं, और python grammar file में एक अपरिचित पैटर्न में आए।रेगेक्स समूह

पैटर्न (?x) से शुरू होता है जो मेरे लिए एक अपरिचित रेगेक्स है। मैंने इसे online regex tester में देखा, जो ऐसा लगता है कि यह अमान्य है। मेरा प्रारंभिक विचार यह एक वैकल्पिक बाएं माता-पिता का प्रतिनिधित्व करता था, लेकिन मेरा मानना ​​है कि माता-पिता से बच जाना चाहिए।

क्या इसका केवल एटम के कॉफ़ीस्क्रिप्ट व्याकरण में अर्थ है, या क्या मैं रेगेक्स अर्थ को देख रहा हूं?

(यह पैटर्न textmate language फ़ाइल में भी दिखाई देता है जो मुझे विश्वास है कि एटम का आया है)।

+0

जावास्क्रिप्ट वर्बोज़ रेगेक्स संशोधक का समर्थन नहीं करता है। –

उत्तर

2

कि नियमित अभिव्यक्ति अजगर में संसाधित हो जाता है, यह अत्यधिक शब्द 'ध्वज के साथ संकलित किया जाएगा।

the Python re docs से

:

(? AiLmsux) सेट से

(एक या अधिक पत्र 'एक', 'i', 'एल', 'मी', 'एस', 'यू', 'x'।) समूह खाली स्ट्रिंग से मेल खाता है; पत्र संबंधित झंडे सेट करते हैं: re.A (ASCII- केवल मिलान), re.I (केस अनदेखा करें), re.L (लोकेल आश्रित), re.M (बहु-पंक्ति), re.S (dot सभी से मेल खाता है), और re.X (verbose), संपूर्ण नियमित अभिव्यक्ति के लिए। (झंडे मॉड्यूल सामग्री में वर्णित हैं।) यह उपयोगी है अगर आप को नियमित अभिव्यक्ति के हिस्से के रूप में झंडे re.compile() फ़ंक्शन पर तर्क देने के बजाय शामिल करना चाहते हैं।

+1

धन्यवाद, मैंने सोचा था कि यह जेएस रेगेक्स का उपयोग कर रहा था, लेकिन आगे देखकर ऐसा लगता है कि एटम ने अपने स्वयं के रेगेक्स इंजन को संशोधित किया है, जिसमें संभवतः इस सुविधा को शामिल किया गया है। – beardc

1

जावास्क्रिप्ट रेगेक्स इंजन VERBOSE संशोधक x का समर्थन नहीं करता है, न तो इनलाइन, न ही नियमित रूप से।

rexegg.com पर Free-Spacing: x (except JavaScript) देखें:

डिफ़ॉल्ट रूप से, एक regex स्ट्रिंग में किसी भी स्थान के लिए एक चरित्र मिलान किया जा निर्दिष्ट करता है। उन भाषाओं में जहां आप कई लाइनों पर रेगेक्स स्ट्रिंग्स लिख सकते हैं, लाइन ब्रेक भी मिलान किए जाने वाले अक्षर वर्णों को निर्दिष्ट करते हैं। क्योंकि आप अलग अलग समूहों है कि अलग-अलग अर्थ ले जाने के लिए रिक्त स्थान सम्मिलित नहीं कर सकते (के रूप में आप मुहावरों और pragraphs के बीच करते हैं जब आप अंग्रेजी में लिखें), एक regex को पढ़ने के लिए कठिन हो सकता है ...

सौभाग्य से, कई इंजन एक फ्री- का समर्थन मोड जो आपको अपने रेगेक्स को स्थानांतरित करने की अनुमति देता है। उदाहरण के लिए, आप टोकन के बीच रिक्त स्थान जोड़ सकते हैं।

आप यह भी देख सकते हैं यह खाली स्थान के मोड, टिप्पणी मोड या वर्बोज़ मोड कहा जाता है।

यहाँ how it can look like in Python है:

import re 
regex = r"""(?x) 
\d+    # Digits 
\D+    # Non-digits up to... 
$     # The end of string 
""" 
print(re.search(regex, "My value: 56%").group(0)) # => 56% 
+1

मुझे लगता है कि उदाहरण और वैकल्पिक दस्तावेज संदर्भ प्रश्न में जोड़ते हैं, इसलिए मैं इसे रखूंगा। मेरा बड़ा लटका वर्बोज़ मोड ध्वज की पहचान कर रहा था, इसलिए उस पहलू में जवाब उपयोगी था। धन्यवाद। – beardc

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