কেবলমাত্র অক্ষরের সাথে মিলে যাওয়ার জন্য রেজেক্স


374

আমি কীভাবে কেবল একটি বর্ণের সাথে মেলে এমন একটি রেজেক্স লিখতে পারি?


58
আপনার সংজ্ঞা কি characters? হওয়া ASCII? কাঞ্জি? ISO-XXXX এর-এক্স? UTF8 হওয়া?
আইভো ওয়েটজেল

45
আপনার সংজ্ঞা কি regex? পার্ল? এ গিয়ে Emacs? Grep?
পাস্কেল কুয়াক

4
একটি ইংরেজী সাইটে, প্রশ্নটি ইংরেজিতে রয়েছে তা দেওয়া, প্রশ্নটি ইংরেজিতে অক্ষরের সাথে সম্পর্কিত প্রশ্নটি ধরে নেওয়া উপযুক্ত।
ভাইয়ের-কে

1
আমি লক্ষ্য করেছি যে \ পি {এল} একটি চিঠি এবং জন্য / তোমার দর্শন লগ করা ইউনিকোড জন্য তা পতাকাঙ্কিত আমার Regex অর্থাত যে কোন চিঠি মিলে যায়/\p{L}+/u
MAXZOOM

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 from Z এর একটি অক্ষরের সাথে মেলে। [a-zA-Z]+এক বা একাধিক বর্ণের সাথে ^[a-zA-Z]+$মেলে এবং কেবলমাত্র এক বা একাধিক অক্ষর নিয়ে গঠিত স্ট্রিংগুলির সাথে মেলে ( ^এবং $একটি স্ট্রিংয়ের যথাক্রমে শুরু এবং শেষ চিহ্নিত করুন)।

আপনি A-Z ক্রমানুসারে ছাড়া অন্য অক্ষর মেলে চান, আপনি হয় তাদের অক্ষর সেট যোগ করতে পারেন: [a-zA-ZäöüßÄÖÜ]। অথবা আপনি কি মত পূর্বনির্ধারিত অক্ষর ক্লাস ব্যবহার ইউনিকোড অক্ষর সম্পত্তি বর্গ \p{L}যে ইউনিকোড অক্ষর আছে যা অক্ষর বর্ণনা করে।


119
এটি একটি খুব ASCII কেন্দ্রিক সমাধান। এটি কোনও অ-ইংরেজী পাঠ্যকে প্রায় ভেঙে দেবে।
জোছিম সউর 12

7
@ জোয়াচিম সৌর: এটি লাতিন অ অক্ষর ব্যবহার করে ভাষাগুলি ভেঙে দেবে।
গম্বো

15
ইতিমধ্যে 90% জার্মান পাঠ্য বিরতি পেয়েছে, এমনকি ফরাসি বা স্প্যানিশও উল্লেখ করবেন না। ইতালীয় যদিও এখনও বেশ ভাল করতে পারে।
আইভো ওয়েটজেল

9
এটি নির্ভর করে আপনি "ল্যাটিন চরিত্র" এর কোন সংজ্ঞাটি বেছে নেন। জে, ইউ, Ö, Ä সমস্তই আপনার সংজ্ঞা অনুসারে লাতিন অক্ষর হিসাবে যুক্তিযুক্ত হতে পারে। তবে সেগুলি সমস্ত ভাষায় ব্যবহৃত হয় যা লেখার জন্য "লাতিন বর্ণমালা" ব্যবহার করে।
জোচিম সউর

9
\ p {L সমস্ত আমলাট সিডিলা অ্যাকসেন্ট ইত্যাদির সাথে মেলে, তাই আপনার সাথে এটি করা উচিত।
রাদু সিমিনেস্কু

198

\p{L} আপনি যদি লাতিনের অক্ষরের বাইরে বর্ণমালায় আগ্রহী হন তবে একটি ইউনিকোড বর্ণের সাথে মিলিত হয় matches


2
সমস্ত regex স্বাদে না। উদাহরণস্বরূপ, ভিম রেজেক্সগুলি \p"মুদ্রণযোগ্য চরিত্র" হিসাবে বিবেচনা করে ।
ফিলিপ পটার 12

3
এই পৃষ্ঠাটিতে কেবল জাভা,। নেট, পার্ল, জেগসফট, এক্সএমএল এবং এক্সপথ রেজিেক্সগুলি সমর্থন করে \ পি {এল}} তবে প্রধান বাদগুলি: পাইথন এবং রুবি (যদিও পাইথনের রেজেক্স মডিউল রয়েছে)।
ফিলিপ পটার 12

6
@ ফিলিপ পটার: রুবি সেই একই একই বাক্য গঠন ব্যবহার করে ইউনিকোড চরিত্রের বৈশিষ্ট্যগুলিকে সমর্থন করে।
জার্গ ডব্লু মিট্টাগ

6
আমি মনে করি এটি \p{L}\p{M}*+একাধিক কোডপয়েন্ট দ্বারা গঠিত অক্ষরগুলি আবরণ করা উচিত , উদাহরণস্বরূপ অ্যাকসেন্ট চিহ্নগুলির পরে একটি চিঠি। অনুযায়ী regular-expressions.info/unicode.html
ZoFreX

অজগর 3 দিয়ে এটি একটি ত্রুটি দেয়bad escape \p at position 0
ম্যাটানস্টার

46

আপনার "চরিত্র" এর অর্থের উপর নির্ভর করে:

[A-Za-z]- সমস্ত অক্ষর (বড় হাতের এবং ছোট হাতের অক্ষর)

[^0-9] - সমস্ত অ-অঙ্কের অক্ষর


মানে লেটারস। এটি কাজ করছে বলে মনে হয় না। preg_match ('/ [a-zA-Z] + /', $ নাম);
নাইকি

[এ-জা-জেড] হ'ল আপনি যে অক্ষরগুলি ব্যবহার করতে পারেন তা কেবলমাত্র ঘোষণা। এই ঘোষণাপত্রটি আপনাকে এখনও কতবার প্রকাশ করতে হবে: [এ-জা-জেড]-1,2} (1 বা 2 বর্ণের সাথে মেলে) বা [এ-জা-জেড] {1, *} (ম্যাচ করার জন্য) 1 বা ততোধিক অক্ষর)
ক্রিস্টফমলস

17
ভাল à, á, ã, Ö, Ä ... চিঠিগুলিও তাই, অ, আ, ই, ঈ, Є, Ж, З, ﺡ, ﺥ, ﺩ א, ב, ג, ש, ת, ... en.wikipedia.org/wiki/Letter_%28alphabet%29
phuclv

@ ফুকলভ: প্রকৃতপক্ষে, তবে এটি এনকোডিংয়ের উপর নির্ভর করে এবং এনকোডিংটি প্রোগ্রামের সেটিংসের একটি অংশ (ডিফল্ট কনফিগারেশন বা প্রোগ্রামের একটি কনফিগার ফাইলে ঘোষিত একটি)। আমি যখন বিভিন্ন ভাষায় কাজ করতাম, তখন আমি কনফিগার ফাইলে ধ্রুবকভাবে এটি সঞ্চয় করতাম।
ক্যাটালিনা চিরচু

1
@ ক্যাটালিনাচিরকু এনকোডিং এখানে একেবারেই অপ্রাসঙ্গিক। বাইনারি-তে নির্ধারিত অক্ষরটিতে কোড পয়েন্ট এনকোড করার একটি উপায় এনকোডিং, উদাহরণস্বরূপ ইউটিএফ -8 ইউনিকোডের জন্য একটি এনকোডিং। চিঠিগুলি OTOH ভাষার উপর নির্ভর করে, এবং যদি কেউ বলে [A-Za-z]যে অক্ষর হয় তবে যে ভাষাটি ব্যবহার করা হচ্ছে তা অবশ্যই নির্দিষ্ট করতে হবে
phuclv

32

নিকটতম বিকল্প উপলব্ধ

[\u\l]+

যা বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরের একটি ক্রমের সাথে মেলে। তবে এটি সমস্ত সম্পাদক / ভাষা দ্বারা সমর্থিত নয়, তাই এটি সম্ভবত ব্যবহার করা নিরাপদ

[a-zA-Z]+

অন্যান্য ব্যবহারকারীদের পরামর্শ হিসাবে


1
যদিও কোনও বিশেষ চরিত্রের সাথে মেলে না।
নাইয়ারগডস

20

আপনি ব্যবহার করবেন

/[a-z]/gi

[] - প্রদত্ত ইনপুটগুলির মধ্যে কোনও অক্ষর পরীক্ষা করে

আজ --- পুরো বর্ণমালা আবরণ করে

g ----- পুরো স্ট্রিং জুড়ে বিশ্বব্যাপী

i ----- উপরের এবং ছোট হাতের অক্ষর


14

"/ ^ [A-zA-Z] $ / i" হিসাবে কিছু লোক লিখেছেন এমন নিয়মিত প্রকাশটি সঠিক নয় কারণ সর্বশেষে তারা উল্লেখ করেছেন / i যা ক্ষেত্রে সংবেদনশীল এবং প্রথমবারের সাথে মিলের পরে এটি ফিরে আসবে। / I এর পরিবর্তে কেবল / জি ব্যবহার করুন যা বিশ্বব্যাপী এবং আপনার আরম্ভ এবং শেষের জন্য ^ put রাখার দরকার নেই ।

/[a-zA-Z]+/g
  1. [a-z _] + নীচের তালিকায় উপস্থিত একটি চরিত্রের সাথে মেলে
  2. কোয়ান্টিফায়ার: + এক এবং সীমাহীন সময়ের মধ্যে যতবার সম্ভব সম্ভব, প্রয়োজন অনুসারে ফিরিয়ে দেওয়া
  3. AZ একটি ও z মধ্যে সীমার মধ্যে একটি অক্ষর (কেস সংবেদনশীল)
  4. AZ এবং A এর মধ্যে পরিসরের একক অক্ষর AZ (কেস সংবেদনশীল)
  5. g সংশোধক: গ্লোবাল। সমস্ত ম্যাচ (প্রথম ম্যাচে ফিরবেন না)




7

অক্ষর গোষ্ঠী ব্যবহার করুন

\D

সংখ্যা 0-9 ব্যতীত অন্য কোনও অক্ষরের সাথে মেলে

^\D+$

এখানে উদাহরণ দেখুন


8
এটি হোয়াইটস্পেস, প্রতীক ইত্যাদির সাথেও মিলবে যা প্রশ্নটি জিজ্ঞাসা করছে বলে মনে হচ্ছে না।
ডেভমঙ্গুজ

রহস্যময়। এই উপর একটি ডাউনভোট পেয়েছি, এবং এটি আমি না!
ডেভ এভারিট

6

শুধু ব্যবহার \wবা [:alpha:]। এটি একটি পালানোর ক্রম যা কেবলমাত্র প্রতীকগুলির সাথে মেলে যা শব্দগুলিতে উপস্থিত হতে পারে।


9
\wসব ক্ষেত্রেই ভাল সমাধান নাও হতে পারে। কমপক্ষে পিসিআরই-তে \wঅন্য অক্ষরের সাথেও মেলে। পিএইচপি ম্যানুয়ালটি উদ্ধৃত করে : " একটি" শব্দ "অক্ষর হ'ল কোনও বর্ণ বা অঙ্ক বা আন্ডারস্কোর অক্ষর, অর্থাত্ যে কোনও অক্ষর যা পার্ল" শব্দের "অংশ হতে পারে letters অক্ষর এবং অঙ্কগুলির সংজ্ঞা পিসিআরই এর অক্ষর সারণী দ্বারা নিয়ন্ত্রিত হয়, এবং লোকেল-নির্দিষ্ট ম্যাচিংয়ের ক্ষেত্রে পরিবর্তন হতে পারে example উদাহরণস্বরূপ, "ফরাসী" (ফরাসী) লোকালে, উচ্চারণযুক্ত বর্ণের জন্য 128 এর চেয়ে বেশি কিছু অক্ষর কোড ব্যবহার করা হয়, এবং এগুলি \ ডাব্লু দ্বারা মিলছে ched "
অমল মুরালি

শব্দগুলিতে বর্ণগুলি থেকে অন্যান্য অক্ষর অন্তর্ভুক্ত রয়েছে
ভি-শাই

2
\wমানে মিলের অক্ষর এবং সংখ্যা
ইউজেন কনকভ

4

আপনি যদি কোনও অক্ষর এনকোডিংয়ের কোনও অক্ষর বোঝাতে চান, তবে স্পেস \s, ডিজিট \dএবং অন্যান্য বিশেষ অক্ষরের মতো নন-অক্ষরগুলি মুছতে একটি ভাল পদ্ধতির উপায় হতে পারে :

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

বা সরাসরি কোনও বর্ণ বর্ণনার জন্য উপরের উপেক্ষার অবহেলা ব্যবহার করুন:

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

পেশাদাররা:

  • সমস্ত regex স্বাদ সঙ্গে কাজ করে।
  • সহজে লেখা, কখনও কখনও প্রচুর সময় সাশ্রয় করে।

কনস:

  • দীর্ঘ, কখনও কখনও নিখুঁত না হলেও চরিত্রের এনকোডিংটিও ভেঙে যেতে পারে।

4

আপনি এই নিয়মিত প্রকাশটি চেষ্টা করতে পারেন: [^\W\d_]বা [a-zA-Z]


এর [^\W|\d]অর্থ এই নয়
ওগাজা

1
[^\W|\d]মানে না \Wএবং না |এবং না \d। এর অংশ হিসাবে এটির একই নেট প্রভাব |রয়েছে \Wতবে |আপনি যা ভাবেন ঠিক তেমন কাজ করে না। তারপরেও এর অর্থ এটি _চরিত্রটি গ্রহণ করে । আপনি সম্ভবত সন্ধান করছেন[^\W\d_]
ওগাজা

আমি আপনার সাথে একমত, এটি গ্রহণ করে _। তবে "না" " |" এবং "এর সমান, সুতরাং এর [^\W|\d]অর্থ: নয় \W এবং না\d
মটলব

12
[^ab]মানে aএবং না b[^a|b]মানে না aএবং না |এবং না b। একটি দ্বিতীয় উদাহরণ দিতে [a|b|c|d]ঠিক একই হিসাবে [abcd|||]ঠিক একই যা [abcd|]সব যা সমার্থক - একটি আক্ষরিক চরিত্র, কোনো বা অপারেটর হয়। OR অপারেটর প্রতিটি অক্ষরের মধ্যে একটি অক্ষর শ্রেণিতে অন্তর্ভুক্ত থাকে, প্রকৃত অর্থ রাখলে আপনি চান যে শ্রেণিটি (পাইপ) চরিত্রটি গ্রহণ করবে । ([a]|[b]|[c]|[d]|[|])|||
ওগাজা

1

ইদানীং আমি আমার ফর্মগুলিতে এই নমুনাটি ব্যবহার করেছি মানুষের নাম পরীক্ষা করতে, অক্ষর, ফাঁকা এবং অ্যাকসেন্ট চিহ্নের মতো বিশেষ অক্ষর রয়েছে।

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

আপনার কোনও ASCII টেবিলের দিকে নজর দেওয়া উচিত। A-zকেবল অক্ষরের চেয়েও বেশি কিছু মিলছেÀ-ú
টোটো

0

প্যাটার্ন = / [এ-জেডএ-জেড] /

"[a-zA-Z] রাখে: # {প্যাটার্ন.ম্যাচ (" আমার পুষ্প ") OK" ঠিক আছে

"[a-zA-Z] রাখে: # {প্যাটার্ন.ম্যাচ (" 456 ")}"

"[a-zA-Z] রাখে: # {প্যাটার্ন.ম্যাচ (" ")}"

"[a-zA-Z] রাখে: # {প্যাটার্ন.ম্যাচ (" # $% ^ & * ")}"

"[a-zA-Z] রাখে: # {প্যাটার্ন.ম্যাচ (" # $% ^ & * এ ") OK" ঠিক আছে


3
এবং উদাহরণস্বরূপ, "জাজিল্লা জা" কী?
সাক্ষী

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.