ভাল রেগুলার এক্সপ্রেশন কি?

আমি 5 বছরের জন্য প্রধানত জাভা ডেস্কটপ অ্যাপ্লিকেশনগুলি ওরাকল ডেটাবেস অ্যাক্সেসে কাজ করেছি এবং আমি কখনো নিয়মিত এক্সপ্রেশন ব্যবহার করিনি। এখন আমি স্ট্যাক ওভারফ্লো লিখি এবং আমি তাদের সম্পর্কে অনেক প্রশ্ন দেখতে পারি; আমি মনে করি আমি কিছু অনুভব করেছি।

আপনি কি রেগুলার এক্সপ্রেশন ব্যবহার করবেন?

পুনশ্চ আমার অদক্ষ ইংরেজির জন্য আমি দুঃখিত

0
ro fr hi
Javadut.regex.Pattern জন্য Javadocs পড়তে ভুলবেন না। এটি একটি ভাল রেফারেন্স এছাড়াও perldoc.perl.org/perlre.html
যোগ লেখক Adrian Pronk, উৎস

9 উত্তর

একটি রেগুলার এক্সপ্রেশন (সংক্ষিপ্ত জন্য regex বা regexp) একটি অনুসন্ধান প্যাটার্ন বর্ণনা জন্য একটি বিশেষ টেক্সট স্ট্রিং। আপনি স্টেরয়েড উপর ওয়াইল্ডকার্ড হিসাবে নিয়মিত এক্সপ্রেশন মনে করতে পারেন। আপনি সম্ভবত ফাইলকার্ডের সমস্ত পাঠ্য ফাইল খুঁজে পেতে ওয়াইন্ডকার্ডের লক্ষণ যেমন * .txt সাথে পরিচিত হন। Regex সমতুল্য । * \। Txt $

A great resource for regular expressions: http://www.regular-expressions.info

0
যোগ

রুবি একটি উদাহরণ বিবেচনা করুন:

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

"/ \ D {3} - \ d {4} /" হল নিয়মিত এক্সপ্রেশন, এবং আপনি দেখতে পারেন এটি একটি স্ট্রিংয়ের একটি ম্যাচ খুঁজে পাওয়ার একটি খুব সংক্ষিপ্ত উপায়।

উপরন্তু, গ্রুপ ব্যবহার করে আপনি তথ্য আহরণ করতে পারেন, যেমন:

match = /([^@]*)@(.*)/.match("[email protected]")
name = match[1]
domain = match[2]

এখানে, নিয়মিত অভিব্যক্তি মধ্যে বন্ধনী একটি ক্যাপচারিং গ্রুপ চিহ্নিত করুন, তাই আপনি দেখতে পারেন ঠিক যে তথ্য আপনি মেলে কি, যাতে আপনি আরও প্রক্রিয়াজাতকরণ করতে পারেন।

এই হিমশৈল একটি টিপ হয় ... আপনি একটি প্রমিত এক্সপ্রেশন যা আপনি প্রক্রিয়াকরণ টেক্সট সত্যিই সহজ করতে পারেন অনেক অনেক বিভিন্ন জিনিস আছে।

0
যোগ

রেগুলার এক্সপ্রেশন (বা রেজক্স) স্ট্রিংগুলিতে প্যাটার্ন মিলের জন্য ব্যবহার করা হয়। আপনি একটি টেক্সট প্যাটার্ন থেকে এইভাবে সমস্ত ইমেল ঠিকানা টানতে পারেন কারণ এটি একটি নির্দিষ্ট প্যাটার্ন অনুসরণ করে।

কিছু কিছু ক্ষেত্রে রেগুলার এক্সপ্রেশন ফরোয়ার্ড-স্ল্যাশে সংযুক্ত করা হয় এবং দ্বিতীয় স্ল্যাশের পরে অপশনগুলি যেমন কেস-অস্থিরতা হিসাবে থাকে। এখানে একটি ভাল এক :)

/(bb|[^b]{2})/i

কথিত এটি "2 হতে হবে বা না 2 হতে" পড়তে পারে

প্রথম অংশ (বন্ধনী), তারা পাইপ দ্বারা বিভক্ত হয় অক্ষর যা একটি বা বিবৃতি সমান তাই (একটি | বি) মিল "একটি" বা "বি" পাইপ এলাকার প্রথম অর্ধেক "বিবি" মেলে। দ্বিতীয় অর্ধের নামটি আমি জানি না কিন্তু এটি বর্গাকার বন্ধনী, তারা যে না "b" যে কোনও রকমের সাথে মিলিত হয়, তাই সেখানে ছাদে প্রতীক জিনিসপত্র (কারিগরি শব্দ) আছে। Squiggly বন্ধনী তাদের আগে জিনিসগুলির একটি গণনা মেলে, এই ক্ষেত্রে দুটি অক্ষর যে "বি" হয় না।

দ্বিতীয় / পরে একটি "আমি" যা এটি ক্ষেত্রে অসংবেদী করে তোলে। শুরু এবং শেষ স্ল্যাশ ব্যবহার পরিবেশ নির্দিষ্ট, কখনও কখনও আপনি এবং কখনও কখনও আপনি না।

দুটি লিঙ্ক যা আমি মনে করি আপনি এই জন্য সহজ পাবেন

  1. নিয়মিত-expressions.info
  2. উইকিপিডিয়া - নিয়মিত এক্সপ্রেশন
0
যোগ
squiggly 2 সংক্রান্ত ব্র্যাকগুলি সাধারণ নয়, তারা কার্লি </কোড> ..
যোগ লেখক Timo, উৎস
এটি একটি ভাল বর্ণনা, কিন্তু মাইক এর বাস্তব বিশ্বের উদাহরণ punning '2b' এক থেকে preferable। দুটি জোড়া একসাথে চমৎকার হবে।
যোগ লেখক Bobby Jack, উৎস

আপনি যদি নিয়মিত অভিব্যক্তি দিয়ে শুরু করেন, আমি আন্তরিকভাবে রেজক্স কোচ মত একটি সরঞ্জাম সুপারিশ:

http://www.weitz.de/regex-coach/

এছাড়াও RegexBuddy সম্পর্কে ভাল জিনিস শুনেছেন:

http://www.regexbuddy.com/

0
যোগ

Validating strong passwords:

এটি 5 থেকে 10 টি আলফানিউমেরিকাল অক্ষরের দৈর্ঘ্য সহ একটি পাসওয়ার্ড যাচাই করবে, কমপক্ষে একটি বড় ক্ষেত্রে, একটি ছোট হাতের এবং এক অঙ্কের সাথে:

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$
0
যোগ

সবচেয়ে সুন্দর নিয়মিত এক্সপ্রেশন কখনো :

/^1?$|^(11+?)\1+$/

এটি একটি সংখ্যা প্রধান হলে পরীক্ষা করে। এবং এটি কাজ করে !!

এন: বি .: এটি কাজ করতে, সেট আপ একটি বিট প্রয়োজন; যে সংখ্যাটি আমরা পরীক্ষা করতে চাই তার একটি 1 ? এর প্রথম রূপে রূপান্তরিত করতে হবে, তারপর স্ট্রিং এর কোন মৌলিক সংখ্যা নেই? 1 ? s:

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

অবিনশ মিটুকের ব্লগ

0
যোগ
এটা চতুর, কিন্তু একটি শিষ্যদের জন্য কমই উপযুক্ত! :)
যোগ লেখক Bobby Jack, উৎস
@ কোপাস: এটি সম্পূর্ণরূপে কাজ করে। আপনি কিভাবে এবং ব্যাখ্যা যে আমি লিঙ্ক করেছি?
যোগ লেখক Konrad Rudolph, উৎস
যে কাজ করতে বলে মনে হচ্ছে না ... অথবা আমি কিছু অনুপস্থিত করছি।
যোগ লেখক Copas, উৎস

যদি আপনি নিয়মিত এক্সপ্রেশন সম্পর্কে জানতে চান, তবে আমি নিয়মিত অভিব্যক্তি মেনে চলার সুপারিশ করছি। এটা খুব মৌলিক ধারণা থেকে সব উপায় যায়, কিভাবে বিভিন্ন ইঞ্জিনের নীচে কাজ সম্পর্কে কথা বলতে পর্যন্ত সব উপায়। গত 4 টি অধ্যায়গুলি পিএইচপি, .Net, Perl এবং Java উভয় ক্ষেত্রেই একটি ডেডিকেটেড অধ্যায় দেয়। আমি এটি থেকে অনেক শিখেছি, এবং এখনও এটি একটি রেফারেন্স হিসাবে ব্যবহার।

0
যোগ

আপনি হয়ত জানেন যে, ওরাকলের নিয়মিত এক্সপ্রেশন আছে: http: / /www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html । আমি কয়েকটি প্রশ্নের মধ্যে নতুন কার্যকারিতা ব্যবহার করেছি, কিন্তু এটি অন্যান্য প্রসঙ্গে হিসাবে দরকারী না হয়েছে। কারণ, আমি বিশ্বাস করি যে, অনিয়ন্ত্রিত তথ্যগুলির মধ্যে সমাহিত সুসংগত তথ্য সন্ধানের জন্য নিয়মিত এক্সপ্রেশন সবচেয়ে উপযুক্ত।

উদাহরণস্বরূপ, আমি একটি রেজক্স ব্যবহার করতে পারি যাতে ওকেল বার্তাগুলি লগ ফাইলে পরিপূর্ণ থাকে। বার্তাগুলি কোথায় তা জানা সম্ভব নয় - শুধুমাত্র তারা কিসের মত চেহারা দেখেন। সুতরাং একটি regex হল যে সমস্যার সেরা সমাধান। যখন আপনি একটি রিলেশনাল ডাটাবেসের সাথে কাজ করেন, ডেটা সাধারণত প্রাক-রক্ষিত হয়, তাই একটি রেজক্স এই প্রসঙ্গে উজ্জ্বল হয় না।

0
যোগ

এই RE এর ভিসুয়াল স্টুডিও এবং C ++ এর জন্য নির্দিষ্ট কিন্তু আমি তাদের সময়ে সময়ে পাওয়া যায়:

নন-ডিফল্ট প্যারামেম দিয়ে "রুটিননাম" এর সকল ঘটনার সন্ধান করুন:

পারে routineName \ (: একটি + \) নেই

Conversely to find all occurrences of "routineName" with only defaults: routineName\(\)

একটি ডিবাগ বিল্ড কোড সক্ষম (বা অক্ষম) খুঁজে পেতে:

\#if._DEBUG*

লক্ষ্য করুন এটি এই সমস্ত রূপগুলি ধরবে: ifdef, সংজ্ঞায়িত, ifndef, if! সংজ্ঞায়িত

0
যোগ