केवल अक्षरों का मिलान करने के लिए Regex


374

मैं केवल अक्षरों से मेल खाने वाला रेक्स कैसे लिख सकता हूं?


58
आपकी परिभाषा क्या है characters? ASCII? कांजी? इसो-XXXX-एक्स? UTF8?
इवो ​​वेटजेल

45
आपकी परिभाषा क्या है regex? पर्ल? Emacs? ग्रेप?
पास्कल कूउक

4
यह देखते हुए कि प्रश्न अंग्रेजी में है, एक अंग्रेजी साइट पर, प्रश्न को अंग्रेजी में मानने के लिए यह उचित है।
vaer-k

1
मैंने देखा है कि यूनिकोड के लिए एक अक्षर और / यू ध्वज के लिए \ p {L} मेरे रेगेक्स में किसी भी पत्र से मेल खाता है/\p{L}+/u
मैक्सजूम

4
Given that the question is in English, on an English site, it's fair to assume the question regards characters in English. यह सच है। जैसा कि हम सभी जानते हैं, अंग्रेजी बोलने वाले कभी भी अपने अनुप्रयोगों को स्थानीय नहीं बनाते हैं!
एलेक्स

जवाबों:


392

एक वर्ण सेट का उपयोग करें: [a-zA-Z]लोअरकेस और अपरकेस में ए-जेड के एक अक्षर से मेल खाता है। [a-zA-Z]+एक या एक से अधिक अक्षरों से ^[a-zA-Z]+$मेल खाता है और केवल एक या अधिक अक्षरों से मिलकर बना होता है ( ^और $क्रमशः एक स्ट्रिंग के आरंभ और अंत को चिह्नित करता है)।

यदि आप A-Z के अलावा अन्य अक्षरों से मेल खाना चाहते हैं, तो आप उन्हें वर्ण सेट में जोड़ सकते हैं [a-zA-ZäöüßÄÖÜ]:। या आप यूनिकोड वर्ण गुण वर्ग जैसे पूर्वनिर्धारित वर्ण वर्ग का उपयोग करते हैं जो यूनिकोड वर्णों का\p{L} वर्णन करता है जो अक्षर हैं।


119
यह एक बहुत ASCII केंद्रित समाधान है। यह बहुत अधिक किसी भी गैर-अंग्रेजी पाठ पर टूट जाएगा।
जोकिम सउर

7
@ जोकिम सॉर: यह गैर-लैटिन अक्षरों का उपयोग करके भाषाओं पर टूट जाएगा।
गुम्बो सेप

15
पहले से ही जर्मन पाठ के 90% पर टूट जाता है, यहां तक ​​कि फ्रांसीसी या स्पेनिश का उल्लेख नहीं करते। इटैलियन हालांकि अभी भी बहुत अच्छा कर सकते हैं।
इवो ​​वेटजेल

9
यह निर्भर करता है कि आप "लैटिन चरित्र" की परिभाषा क्या चुनते हैं। J, U,,, Ä सभी को आपकी परिभाषा के आधार पर लैटिन वर्ण या नहीं होने का तर्क दिया जा सकता है। लेकिन वे सभी भाषाओं में उपयोग किए जाते हैं जो लिखने के लिए "लैटिन वर्णमाला" का उपयोग करते हैं।
जोकिम सॉर

9
\ p {L} सभी umlauts sedilla एक्सेंट आदि से मेल खाता है, इसलिए आपको उसी के साथ जाना चाहिए।
राडू सिमियोनेस्कु

198

\p{L} कुछ भी है कि एक यूनिकोड पत्र से मेल खाता है यदि आप लैटिन से परे अक्षर में रुचि रखते हैं


2
सभी रेगेक्स फ्लेवर में नहीं। उदाहरण के लिए, विम रेग्जेस \p"प्रिंट करने योग्य चरित्र" के रूप में व्यवहार करते हैं ।
फिलिप पॉटर

3
यह पृष्ठ केवल java, .net, perl, jgsoft, XML और XPath regexes support \ p {L} का सुझाव देता है। लेकिन प्रमुख चूक: अजगर और माणिक (हालांकि अजगर में रेगेक्स मॉड्यूल है)।
फिलिप पॉटर

6
@ पिलिप पॉटर: रूबी यूनिकोड वर्ण गुणों का समर्थन करता है जो सटीक एक ही वाक्य रचना का उपयोग करता है।
जोर्ग डब्ल्यू मित्तग

6
मुझे लगता है कि यह \p{L}\p{M}*+कई कोडपॉइंट्स से बने अक्षरों को कवर करने के लिए होना चाहिए , उदाहरण के लिए उच्चारण चिह्न के बाद एक पत्र। के अनुसार regular-expressions.info/unicode.html
ZoFreX

अजगर 3 के साथ यह एक त्रुटि पैदा करता हैbad escape \p at position 0
Matanster

46

"वर्ण" के आपके अर्थ पर निर्भर करता है:

[A-Za-z]- सभी अक्षर (अपरकेस और लोअरकेस)

[^0-9] - सभी गैर-अंक वर्ण


मेरा मतलब था लेटर्स। हालांकि यह काम नहीं करता है। preg_match ('/ [a-zA-Z] + /', $ नाम);
नाइक

[ए-ज़-ज़] केवल उन पात्रों की घोषणा है जिन्हें आप उपयोग कर सकते हैं। आपको अभी भी यह घोषित करने की आवश्यकता है कि इस घोषणा का उपयोग कैसे किया जाए: [A-Za-z] {1,2} (1 या 2 अक्षरों से मेल खाने के लिए) या [A-Za-z] {1, *} (मिलान करने के लिए) 1 या अधिक अक्षर)
क्रिस्टोफ़मोल्स

17
वेल आ, á, ã,,, letters ... अक्षर भी हैं, इसलिए, আ,,,,,,,,,,,,,,,,,, א, ב, ג, ש, ת, ת ... en.wikipedia.org/wiki/Letter_%28alphabet%29
phuclv

@phuclv: वास्तव में, लेकिन यह एन्कोडिंग पर निर्भर करता है, और एन्कोडिंग प्रोग्राम की सेटिंग्स का हिस्सा है (या तो डिफ़ॉल्ट कॉन्फिग या प्रोग्राम की एक कॉन्फिग फाइल में घोषित है)। जब मैंने विभिन्न भाषाओं पर काम किया, तो मैं इसे एक कॉन्‍फ़‍िगर फ़ाइल में संग्रहीत करता था।
कैटालिना चिरकु

1
@CatalinaChircu एन्कोडिंग यहाँ बिल्कुल अप्रासंगिक है। एन्कोडिंग द्विआधारी में निर्धारित चरित्र में कोड बिंदु को एनकोड करने का एक तरीका है, उदाहरण के लिए यूटीएफ -8 यूनिकोड के लिए एक एन्कोडिंग है। पत्र OTOH भाषा पर निर्भर करता है, और अगर कोई कहता है [A-Za-z]कि पत्र हैं तो जिस भाषा का उपयोग किया जा रहा है वह निर्दिष्ट होना चाहिए
phuclv

32

निकटतम विकल्प उपलब्ध है

[\u\l]+

जो अपरकेस और लोअरकेस अक्षरों के अनुक्रम से मेल खाता है। हालाँकि, यह सभी संपादकों / भाषाओं द्वारा समर्थित नहीं है, इसलिए इसका उपयोग करना अधिक सुरक्षित है

[a-zA-Z]+

जैसा कि अन्य उपयोगकर्ता सुझाव देते हैं


1
हालांकि किसी भी विशेष वर्ण से मेल नहीं खाएंगे।
Nyerguds

20

आप उपयोग करेंगे

/[a-z]/gi

[] - दिए गए इनपुट के बीच किसी भी वर्ण के लिए जाँच

az --- पूरे वर्णमाला को कवर करता है

जी ----- पूरे स्ट्रिंग में विश्व स्तर पर

i ----- ऊपरी और निचला भाग प्राप्त करना


14

नियमित अभिव्यक्ति जो कुछ लोगों ने "/ ^ [a-zA-Z] $ / i" के रूप में लिखी है, सही नहीं है क्योंकि आखिरी में उन्होंने उल्लेख किया है / जो केस असंवेदनशील है और पहली बार मिलान करने के बाद वापस लौट आएगा। के बजाय / मैं सिर्फ उपयोग / जी जो वैश्विक के लिए है और आप भी शुरू करने और समाप्त करने के लिए ^ $ डालने की कोई जरूरत नहीं है ।

/[a-zA-Z]+/g
  1. [a-z _] + नीचे दी गई सूची में मौजूद किसी एकल वर्ण से मेल खाते हैं
  2. क्वांटिफायर: + एक और असीमित समय के बीच, जितनी बार संभव हो, वापस आवश्यकतानुसार
  3. a और z के बीच की सीमा में az एकल वर्ण (केस संवेदी)
  4. A और Z के बीच की सीमा में AZ एकल वर्ण (केस संवेदी)
  5. जी संशोधक: वैश्विक। सभी मैच (पहले मैच में वापसी नहीं)




7

चरित्र समूहों का उपयोग करें

\D

0-9 अंक को छोड़कर किसी भी वर्ण से मेल खाता है

^\D+$

उदाहरण यहाँ देखें


8
यह व्हाट्सएप, सिंबल आदि से भी मेल खाएगा, जो लगता नहीं है कि सवाल क्या पूछ रहा है।
डेवमंगोज

अजीब। बस इस पर एक अपमान हो गया, और यह मैं नहीं हूं!
डेव एवरिट

6

बस का उपयोग करें \wया [:alpha:]। यह एक भागने का क्रम है जो केवल प्रतीकों से मेल खाता है जो शब्दों में प्रकट हो सकता है।


9
\wसभी मामलों में एक अच्छा समाधान नहीं हो सकता है। कम से कम पीसीआरई में, \wअन्य पात्रों से भी मेल खा सकते हैं। PHP मैनुअल का हवाला देते हुए : " A" शब्द "वर्ण कोई अक्षर या अंक या अंडरस्कोर वर्ण है, अर्थात, कोई भी वर्ण जो पर्ल" शब्द "का हिस्सा हो सकता है। अक्षरों और अंकों की परिभाषा PCRE के वर्ण तालिकाओं द्वारा नियंत्रित की जाती है। और यदि लोकेल-विशिष्ट मिलान हो रहा है, तो यह भिन्न हो सकता है। उदाहरण के लिए, "fr" (फ़्रेंच) लोकेल में, 128 से अधिक वर्ण कोड उच्चारण अक्षरों के लिए उपयोग किए जाते हैं, और ये \ w से मेल खाते हैं। "
अमल मुरली

शब्दों में अक्षरों के अन्य वर्ण शामिल हैं
V-SHY

2
\wका अर्थ है अक्षरों और संख्याओं से मेल खाना
यूजेन कोनकोव

4

यदि आप किसी भी वर्ण एन्कोडिंग में किसी भी अक्षर का मतलब रखते हैं, तो एक अच्छा दृष्टिकोण गैर-अक्षरों को हटाने के लिए हो सकता है जैसे रिक्त स्थान \s, अंक \dऔर अन्य वर्ण।

[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]

या किसी भी पत्र का सीधे वर्णन करने के लिए ऊपर की उपेक्षा का उपयोग करें:

\S \D and [^  ..special chars..]

पेशेवरों:

  • सभी regex जायके के साथ काम करता है।
  • लिखना आसान है, कभी-कभी बहुत समय बचाएं।

विपक्ष:

  • लंबे, कभी-कभी सही नहीं, लेकिन चरित्र एन्कोडिंग को भी तोड़ा जा सकता है।

4

आप इस नियमित अभिव्यक्ति की कोशिश कर सकते हैं: [^\W\d_]या [a-zA-Z]


इसका [^\W|\d]मतलब यह नहीं है
OGHaza

1
[^\W|\d]मतलब है \Wऔर नहीं |और नहीं \d। इसका एक ही शुद्ध प्रभाव है क्योंकि |यह एक हिस्सा है \Wलेकिन |यह वैसा काम नहीं करता जैसा आप सोचते हैं कि यह करता है। फिर भी इसका मतलब है कि यह _चरित्र को स्वीकार करता है । आप शायद देख रहे हैं[^\W\d_]
OGHaza

मैं आपसे सहमत हूँ, यह स्वीकार करता है _। लेकिन "नहीं" |से "और", तो बराबर है [^\W|\d]नहीं: साधन \W और नहीं\d
Motlab

12
[^ab]मतलब है aऔर नहीं b[^a|b]मतलब है aऔर नहीं |और नहीं b। एक दूसरे उदाहरण के लिए [a|b|c|d]ठीक उसी रूप में है [abcd|||]बिल्कुल वैसा ही है जो के रूप में [abcd|]जो सभी समानता के लिए - शाब्दिक वर्ण, नहीं एक OR ऑपरेटर है। OR ऑपरेटर को एक चरित्र वर्ग में प्रत्येक वर्ण के बीच निहित किया जाता है, वास्तविक साधन जिससे आप चाहते हैं कि वर्ग (पाइप) वर्ण को स्वीकार करे । ([a]|[b]|[c]|[d]|[|])|||
ओगजा

1

हाल ही में मैंने इस पैटर्न का उपयोग लोगों के नामों की जांच करने के लिए किया है, जिसमें अक्षर, रिक्त स्थान और विशेष वर्ण जैसे उच्चारण चिह्न हैं।

pattern="[A-zÀ-ú\s]+"

आपको ASCII तालिका देखना चाहिए। A-zकेवल अक्षरों से अधिक मेल खाता है, साथ हीÀ-ú
टोटो

0

पैटर्न = / [[z-zA-Z] /

"[a-zA-Z]: # {pattern.match (" मेरा फूल ")}} ठीक है

"[a-zA-Z]: # {pattern.match (" 456 ")} डालता है"

"[a-zA-Z]: # {pattern.match (" ")} डालता है

"[a-zA-Z]: # {pattern.match (" # $% ^ & * ")} डालता है

"[a-zA-Z]: # {pattern.match (" # $% ^ & * A ") डालता है}} ठीक है


3
और उदाहरण के लिए, "ज़ाओक्लो गोरस" क्या है?
साक्षी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.