/ / "विशेष" अक्षरों से मेल खाने के लिए एक रेक्स एक्सप्रेशन को कैसे बेहतर बनाया जाए? - रूबी-ऑन-रेल, रूबी, रेगेक्स, रूबी-ऑन-रेल्स -3

"विशेष" अक्षरों से मेल खाने के लिए रेगेक्स अभिव्यक्ति को कैसे सुधारें? - रूबी-ऑन-रेल, रूबी, रेगेक्स, रूबी-ऑन-रेल -3

मैं रेल 3.0 पर रूबी का उपयोग कर रहा हूं।9 और मैं निम्नलिखित रेगेक्स का उपयोग कर रहा हूं ताकि एक स्ट्रिंग युक्त अक्षरों, रिक्त स्थानों और संख्याओं को मान्य कर सके (यदि मैं सही हूं, तो यह उन उल्लिखित वर्णों से मेल खाना चाहिए)

/^[ws-]*$/u

मैं उस रेग्ज को भी एक स्ट्रिंग से मेल करना चाहता हूं जिसमें "विशेष" वर्णमाला हो सकती है, उदाहरण के लिए, ", ", %, &, *, @, !, ?, (, ), [ तथा ]. उन मिलान करने के लिए मैं उपरोक्त रेगेक्स को कैसे बदल सकता हूं?


अद्यतन करें

मैं भूल गया कि उपरोक्त अभिव्यक्ति में मैं मिलान करना चाहूंगा उच्चारण चिह्न जैसे अक्षर à, è, é, ì, ò तथा ù.

उत्तर:

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

अपने चरित्र वर्ग में अतिरिक्त पात्रों को जोड़ते हुए किसी भी ऐसे भाग से बचते हैं, जिसका नियमित अभिव्यक्ति चरित्र वर्ग के अंदर एक विशेष अर्थ होता है (बस [ तथा ] आपके मामले में):

/^[ws""%&*@!?()[]-]*$/u

यह भी सुनिश्चित करें कि आप डाल दिया - चरित्र वर्ग के अंत में या उससे बचकर ()-) ताकि रेगेक्स पार्सर जीता "टी लगता है कि यह एक सीमा का संकेत दे रहा है।

यदि आप भी यूनिकोड "शब्द" वर्णों में फेंकना चाहते हैं, तो बदलें w साथ में p{Word}:

/^[p{Word}s""%&*@!?()[]-]*$/

मान लें कि आप बेशक 1.9 का उपयोग कर रहे हैं। और यदि आप 1.9 का उपयोग नहीं कर रहे हैं, तो आपको बेहतर यूनिकोड समर्थन प्राप्त करने के लिए अपग्रेड करना चाहिए।

The p{} Oniguruma के लिए वाक्यविंयास (१.९ रूबी के लिए regex इंजन) एक नाम संपत्ति के लिए है और यह तुम जैसे "शब्द" संपत्ति के लिए देख रहे है तो फिर लगता है p{Word} के लिए अपने प्रतिस्थापन है w. आप बदलना चाहते हो सकता है s साथ में p{Space} जबकि आप "इसे फिर से:

/^[p{Word}p{Space}""%&*@!?()[]-]*$/

Oniguruma वाक्यविंयास पर अधिक जानकारी यहां उपलब्ध हैं:

http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt


जवाब के लिए 0 № 2

आप विशेष पात्रों से बच सकते हैं । यह नियमित व्यंजक: [] स्ट्रिंग मैच होगा "[]".

इस उपयोगी वेबसाइट पर एक नज़र रखना: http://www.rubular.com/

आप अपने regex का निर्माण और यह तार के खिलाफ परीक्षण कर सकते हैं ।

संपादित करें बस अपने regex के लिए इन बच विशेष अक्षर संलग्न शुरू, तो जैसे: /^[""[]ws-]*$/u वहां मैं "यह इस तरह है कि यह अब भी एक ही कोटा के किसी भी हो के लिए देख सकते है संलग्न ve ("), दोहरे उद्धरण ("), और वर्ग कोष्ठक ([]) ।बस और अधिक जोड़ने अगर आप इसे रखने की जरूरत है ।