একটি নিয়মিত অভিব্যক্তি কি? নিয়মিত অভিব্যক্তি হ'ল একটি নির্দিষ্ট সংখ্যক পূর্বনির্ধারিত অক্ষর এবং এই নির্দিষ্ট অক্ষরগুলির সংমিশ্রণ যা স্ট্রিংয়ের জন্য ফিল্টারিং যুক্তি প্রকাশের জন্য ব্যবহৃত হয়।
নিয়মিত অভিব্যক্তির মাধ্যমে নিম্নলিখিত উদ্দেশ্যগুলি অর্জন করা যায়ঃ
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
এই নিবন্ধে আমি ম্যাকের জন্য অনেক ভাল সফ্টওয়্যার সুপারিশ করেছি।
একটি রিয়েল এক্সপ্রেশন শুধুমাত্র সাধারণ টেক্সট ধারণ করতে পারে, যা এই টেক্সটটির সাথে সঠিকভাবে মেলে। উদাহরণস্বরূপঃ
সাধারণ অভিব্যক্তিঃsong
অনুরাগী চয়নঃ xiao songge
ম্যাচিংয়ের ফলাফলঃ xiaosong
জিয়াও সংগে
নিয়মিত অভিব্যক্তিগুলি ডিফল্টরূপে বড় আকারে লেখা হয়, তাই গানটি মেলে না। Song
. একটি নির্বাচিত অক্ষরের সাথে মেলে, যেমনঃ
নিয়মিত অভিব্যক্তিঃ c.t
মেলে না পাঠ্যঃ cat cet caaat dog
ম্যাচিংয়ের ফলাফলঃcat
cet
ক্যাট ডগ
বিশ্লেষণঃ c.t একটি স্ট্রিংয়ের সাথে মেলে যা "c" দিয়ে শুরু হয় এবং "t" দিয়ে শেষ হয়।
同理,多个连续的.可以匹配多个连续的任意字符:
নিয়মিত অভিব্যক্তিঃ c...t
অনুরাগী চয়নঃ cat cet caat dog
ম্যাচিংয়ের ফলাফলঃ cat cetcaat
কুকুর
. একটি বিশেষ অক্ষর, যা নিয়মিত অভিব্যক্তিতে বিশেষ অর্থ ধারণ করে।. এটি একটি বিশেষ অক্ষর, যা বিশেষ অক্ষরের প্রতি রূপান্তরমূলক ভূমিকা পালন করতে পারে।............
নিয়মিত অভিব্যক্তিঃ c.t
মেলে না পাঠ্যঃ cat c.t dog
ম্যাচিংয়ের ফলাফলঃ catc.t
কুকুর
দ্রষ্টব্যঃ যেহেতু \ একটি বিশেষ অক্ষর, তাই একটি প্রকৃত \ অক্ষর মেলে, দুটি বিপরীত সিলিকা ব্যবহার করা প্রয়োজন \:
নিয়মিত এক্সপ্রেশনঃ c\t
মেলে না পাঠ্যঃ cat c\t dog
ম্যাচিংয়ের ফলাফলঃ catc\t
কুকুর
উপরে বলা হয়েছে. একটি নির্বাচিত অক্ষরের সাথে মেলে, কিন্তু যদি আমি কয়েকটি নির্দিষ্ট অক্ষরের সাথে মেলে? একটি নির্দিষ্ট অক্ষরের সাথে মেলে [এবং] মেটা অক্ষর ব্যবহার করা যেতে পারে।
নিয়মিত অভিব্যক্তিঃ c[ab]t
মেলে না পাঠ্যঃ cat cbt cet
ম্যাচিংয়ের ফলাফলঃcat
cbt
সেট
বিশ্লেষণঃ [ab] "a
উপরের উদাহরণে, যদি আমি [a-z] এর মধ্যে একটি যোগ করতে চাই, তাহলে আমি [cet] এর সাথে কি করব? যদি আমি [a-z] এর সাথে কোন ছোট হাতের অক্ষর যোগ করতে চাই, তাহলে আমি কয়েক ডজন লিখব? যদিও এটি সম্ভব, তবে এটি খুব দীর্ঘ। এখানে আমরা [a-z] ব্যবহার করতে পারিঃ
নিয়মিত অভিব্যক্তিঃ c[a-z]t
মেলেনি পাঠ্যঃ cat cbt czt c2t
ম্যাচিংয়ের ফলাফলঃcat
cbt
czt
c2t
বিশ্লেষণঃ c[a-z]t "c" দিয়ে শুরু হয়, "t" দিয়ে শেষ হয়, মাঝখানে "a" - "z" এর যেকোনো একটি অক্ষর।
এদিকে, বাংলাদেশের বিভিন্ন অঞ্চলে এই ধরনের ঘটনা ঘটেছে।
[0-9] এবং [0123456789] এর একই ফাংশন। [A-F] A থেকে F পর্যন্ত বড় হাতের অক্ষরের সাথে মেলে। [A-Z] A থেকে Z পর্যন্ত সব বড় অক্ষরের সাথে মেলে। [a-z] সব a থেকে z পর্যন্ত ছোট হাতের অক্ষরের সাথে মেলে। [A-z] ASCII A থেকে ASCII z পর্যন্ত সমস্ত অক্ষর মেলে ((শুধুমাত্র সমস্ত অক্ষর নয়, ASCII টেবিলের মধ্যে A থেকে z পর্যন্ত অক্ষরগুলির সাথেও মেলে, যেমন [ এবং ^ ইত্যাদি) ।) [A-Za-z0-9] সব বড় হাতের অক্ষর এবং সংখ্যা মেলে।
অক্ষর সেট সাধারণত এমন একটি সেটকে নির্দিষ্ট করার জন্য ব্যবহৃত হয় যার সাথে আপনি মেলে যেতে চান। তবে কখনও কখনও আপনি এমন একটি সেটকে বাদ দিতে চান যা আপনি মেলে যেতে চান না। এটি অক্ষর সেটকে অস্বীকার করে করা যেতে পারে। উদাহরণস্বরূপঃ
নিয়মিত অভিব্যক্তিঃ c[^a-z]t
মেলেনি পাঠ্যঃ cat cbt czt c2t cAt
ম্যাচিংয়ের ফলাফলঃ cat cbt cztc2t
cAt
বিশ্লেষণঃ এটি পূর্ববর্তী উদাহরণের সম্পূর্ণ বিপরীত। ⇒ [a-z] সব ছোট অক্ষরের সাথে মেলে, যখন [^a-z] সব অ-ছোট অক্ষরের সাথে মেলে।
মনে রাখবেন, ^ অক্ষরটি অক্ষর সেটে থাকা সমস্ত অক্ষরকে অপসারণ করে।
মৌলিক অক্ষরগুলির একটি বিশেষ অর্থ রয়েছে, যা আমরা আগে বলেছি, যেমন... [এবং]....................
সমস্ত মেটা অক্ষরগুলির আগে বিপরীত স্রোতের রূপান্তর যুক্ত করা যেতে পারে, যখন রূপান্তরিত হয়, তখন অক্ষরগুলি তাদের বিশেষ অর্থের পরিবর্তে নিজের সাথে মেলে; উদাহরণস্বরূপ, "[ম্যাচ করবে" []:
আনুষ্ঠানিক অভিব্যক্তিঃ a[b]
মেলে না পাঠ্যঃ a[b ab a[[b
ম্যাচিংয়ের ফলাফলঃa[b
ab a[[b
দ্রষ্টব্যঃ \ একটি রূপান্তরিত মেটা অক্ষর ব্যবহার করে, যার অর্থ \ একটি মেটা অক্ষরও। সুতরাং যদি সত্যিকারের "\" এর সাথে মেলে তবে \ ব্যবহার করা যেতে পারেঃ
নিয়মিত অভিব্যক্তিঃ a\b
মেলে যাওয়া পাঠ্যঃ a\b a\b a[[b
ম্যাচিংয়ের ফলাফলঃ a\ba\b
a[[b
কখনও কখনও আপনি এমন ফাঁকা অক্ষরগুলির সাথে মেলে যেতে পারেন যা পাঠ্যের মধ্যে মুদ্রণযোগ্য নয়। উদাহরণস্বরূপ, আপনি সমস্ত ট্যাব অক্ষর বা সমস্ত প্রতিস্থাপন অক্ষর খুঁজে পেতে চান। আপনি নীচের টেবিলের বিশেষ উপ-অক্ষরগুলি ব্যবহার করতে পারেনঃ
উদাহরণস্বরূপ, \r\n একটি ফরোয়ার্ড ওভারলাইন সমন্বয়কে মেলে, যা উইন্ডোজে একটি ফাইলের ওভারলাইনকে নির্দেশ করে। লিনাক্স এবং ইউনিক্স সিস্টেমে, শুধুমাত্র \n ব্যবহার করা প্রয়োজন।
কিছু বিশেষ মেটাঅক্ষর রয়েছে যা সাধারণভাবে ব্যবহৃত অক্ষর সেটগুলির সাথে মেলে। এই মেটাঅক্ষরগুলিকে মেলে এমন অক্ষর শ্রেণী বলা হয়। আপনি এগুলি ব্যবহার করতে সুবিধাজনক খুঁজে পাবেন।
সংখ্যা বা অ-সংখ্যার সাথে মেলে উপরে বলা হয়েছে, [০-৯] সমস্ত সংখ্যা মেলে। যদি আপনি কোনও সংখ্যা মেলে না চান তবে আপনি [^0-9] ব্যবহার করতে পারেন। নীচের টেবিলে সংখ্যা এবং অ-সংখ্যা শ্রেণীর উপ-অক্ষর তালিকাভুক্ত করা হয়েছেঃ
নিয়মিত অভিব্যক্তিঃ c\dt
মেলেনি পাঠ্যঃ cat c2t czt c9t
ম্যাচিংয়ের ফলাফলঃ catc2t
cztc9t
নিয়মিত এক্সপ্রেশনঃ c\Dt
মেলেনি পাঠ্যঃ cat c2t czt c9t
ম্যাচিংয়ের ফলাফলঃcat
c2tczt
c9t
বর্ণিক এবং অ-বর্ণিক অক্ষরের সাথে মেলে
আরেকটি সাধারণ ক্লাস মেট্রো অক্ষর হল \w এবং \W:
নিয়মিত এক্সপ্রেশনঃ c\wt
মেলে পাঠ্যঃ cat c2t czt c-t c\t
ম্যাচিংয়ের ফলাফলঃcat
c2t
c-t c\ t
নিয়মিত এক্সপ্রেশনঃ c\Wt
মেলে পাঠ্যঃ cat c2t c-t c\t
মেলেঃ cat c2tc-t
c\t
ফাঁকা এবং অ-ফাঁকা মিল
শেষ ম্যাচিং ক্লাসটি হ'ল ফাঁকা ক্লাসঃ
নিয়মিত অভিব্যক্তিঃ c\st
মেলে পাঠ্যঃ cat c t c2t c \ t
ম্যাচিংয়ের ফলাফলঃ catc t
c2t c\ t
নিয়মিত এক্সপ্রেশনঃ c\St
মেলে পাঠ্যঃ cat c t c2t c \ t
ম্যাচিংয়ের ফলাফলঃcat
c tc2t
c\t
+ মেটা অক্ষর এক বা একাধিক অক্ষরের সাথে মেলে। উদাহরণস্বরূপ, a "a" এর সাথে মেলে এবং a + এক বা একাধিক "a" এর সাথে মেলে।
ক্যাট
মেলে না পাঠ্যঃ ct cat caat caaat
ম্যাচিংয়ের ফলাফলঃ ctcat
কাত কাত
আনুষ্ঠানিক অভিব্যক্তিঃ ca+t
মেলে না পাঠ্যঃ ct cat caat caaat
ম্যাচিংয়ের ফলাফলঃ ctcat
caat
caaat
যখন + অক্ষর সেট ব্যবহার করা হয়, তখন + চিহ্নটি সেটের বাইরে রাখা প্রয়োজনঃ
নিয়মিত অভিব্যক্তিঃ c[0-9] + t
মেলে না পাঠ্যঃ ct c0t cat c123t
ম্যাচিংয়ের ফলাফলঃ ctc0t
বিড়ালc123t
বিশ্লেষণঃ c[0-9]+t একটি স্ট্রিং যা "c দিয়ে শুরু হয় এবং t দিয়ে শেষ হয়, যার মাঝখানে এক বা একাধিক সংখ্যা রয়েছে" ।
অবশ্যই, [০-৯+] একটি বৈধ নিয়মিত অভিব্যক্তি, কিন্তু এটি একটি অক্ষর সেট বোঝায় যা "০" - "৯" এবং "+" চিহ্নগুলি ধারণ করে।
সাধারণভাবে,. এবং + এর মতো মেটা অক্ষরগুলি যখন অক্ষর গোষ্ঠীগুলির জন্য ব্যবহৃত হয় তখন আক্ষরিক অর্থ হিসাবে ব্যবহৃত হয়, তাই এটির রূপান্তর করার দরকার নেই। তবে এটির রূপান্তর করা ঠিক আছে, তাই,[0-9+] এবং [0-9+] একই কাজ করে।
দ্রষ্টব্যঃ + হল একটি মেটা অক্ষর, "+" এর সাথে মেলে এমন একটি রূপান্তর +// ব্যবহার করা প্রয়োজন।
যদি আপনি শূন্য বা তার বেশি অক্ষর মেলে ব্যবহার করতে চান তবে আপনি * মেটা অক্ষরটি ব্যবহার করতে পারেন।
আনুষ্ঠানিক অভিব্যক্তিঃ ca*t
মেলে না লেখাঃ ct cat caat cbt
ম্যাচিংয়ের ফলাফলঃct
cat
caat
cbt
দ্রষ্টব্যঃ* চিহ্নগুলি মেটা অক্ষর। * এর সাথে মেলে এমন "*" এর জন্য একটি রূপান্তর প্রয়োজন।*
? শূন্য বা একটি অক্ষরের সাথে মেলে । সুতরাং,? পাঠ্যের মধ্যে একটি পছন্দসই অক্ষরের সাথে মেলে।
নিয়মিত অভিব্যক্তিঃ ca?t
মেলে না লেখাঃ ct cat caat cbt
ম্যাচিংয়ের ফলাফলঃct
cat
caat cbt
দ্রষ্টব্যঃ? চিহ্নটি একটি মেটা অক্ষর । "? " এর সাথে মিলে যাওয়ার জন্য, একটি রূপান্তর প্রয়োজন?
একটি আনুষ্ঠানিক অভিব্যক্তি ম্যাচের সংখ্যা নির্দিষ্ট করার অনুমতি দেয়। সংখ্যাটি
সঠিক সংখ্যার মিল ম্যাচের সংখ্যা নির্ধারণ করতে, আপনি { এবং } এর মধ্যে একটি সংখ্যা লিখতে পারেন। উদাহরণস্বরূপ, {3} এর আগে 3 বার উপস্থিত হওয়া অক্ষর বা সেটগুলির সাথে মেলেঃ
নিয়মিত অভিব্যক্তিঃ ca{3}t
মেলে না লেখাঃ ct cat caaat cbt
ম্যাচিংয়ের ফলাফলঃ ct catcaaat
cbt
কমপক্ষে কতবার মেলে
আমরা কেবলমাত্র মেলে এমন ন্যূনতম মান নির্দিষ্ট করতে পারি। উদাহরণস্বরূপ, {2,} মানে ২ বা ততোধিক মেলেঃ
নিয়মিত অভিব্যক্তিঃ ca{1,}t
মেলে না লেখাঃ ct cat caaat cbt
ম্যাচিংয়ের ফলাফলঃ ctcat
caaat
cbt
সংখ্যাগত ব্যাসার্ধের মধ্যে মিল
আমরা সর্বনিম্ন এবং সর্বাধিক মান ব্যবহার করেও মেলে এমন সংখ্যা নির্ধারণ করতে পারি। উদাহরণস্বরূপ, {2,3} মানে সর্বনিম্ন ২ বার মেলে এবং সর্বোচ্চ ৩ বার মেলে।
স্বাভাবিক অভিব্যক্তিঃ ca{2,3}t
মেলে না লেখাঃ ct cat caaat cbt
ম্যাচিংয়ের ফলাফলঃ ct catcaaat
cbt
সুতরাং? এবং {0,1} এর ফাংশন একই + এবং {1,} এর ফাংশন একই ।
প্রথমত, নিচের উদাহরণগুলো দেখুনঃ
আক্ষরিক অভিব্যক্তিঃ s.*g অনুবাদঃ xiao song xiao song ম্যাচিংয়ের ফলাফলঃ xiao song xiao song বিশ্লেষণঃ s.*g দুটি "song" এর সাথে মেলেনি, যেমনটি প্রত্যাশিত ছিল, তবে প্রথম "s" এবং শেষ "g" এর মধ্যে সমস্ত পাঠ্যের সাথে মেলে।
এটি কারণ * এবং + উভয়ই লোভী মেলে। অর্থাৎ, নিয়মিত অভিব্যক্তি সর্বদা সর্বনিম্নের পরিবর্তে সর্বাধিক মেলে, যা ইচ্ছাকৃতভাবে ডিজাইন করা হয়েছে।
কিন্তু আপনি যদি গরীব মেলে না চান তবে এই পরিমাপ শব্দগুলির জন্য অ-গরীব মেলে ব্যবহার করুন (যতটা সম্ভব অল্প অক্ষর মেলে) ।
হ্যাঁ?আপনি যদি এই উদাহরণটি পরিবর্তন করতে চান তবে আপনি *? ব্যবহার করতে পারেন।
正则表达式:s.? জি
মেলে না লেখাঃ xiao song xiao song
ম্যাচিংয়ের ফলাফলঃ xiaosong
সিয়োsong
分析:可以看到s.?g দুটি "Song" এর সাথে মেলে।
স্ট্রিংয়ের সীমানা মেলে এমন মেটা অক্ষর হল ^ এবং $, যা স্ট্রিংয়ের শুরু এবং শেষে ব্যবহৃত হয়।
↑ ব্যবহার করুনঃ
আনুষ্ঠানিক অভিব্যক্তিঃ ^ xiao
মেলেনি পাঠ্যঃ xiaoosong
ম্যাচিংয়ের ফলাফলঃxiao
গান
অনুরাগী চয়নঃ Axiaosong ম্যাচিংয়ের ফলাফলঃ Axiaosong বিশ্লেষণঃ ^xiao "xiao" দিয়ে শুরু হওয়া স্ট্রিংগুলির সাথে মেলে।
$ ব্যবহার করেঃ
আনুষ্ঠানিক অভিব্যক্তিঃ song$
মেলেনি পাঠ্যঃ xiaoosong
ম্যাচিংয়ের ফলাফলঃ xiaosong
মেলেনি লেখাঃ xiaoosonga ম্যাচিংয়ের ফলাফলঃ জিয়াওসোঙ্গা বিশ্লেষণঃ song$ "song" দিয়ে শেষ হওয়া স্ট্রিংগুলির সাথে মেলে।
শেয়ার করুনঃ
আক্ষরিক অভিব্যক্তিঃ ^ [0-9a-zA-Z] {4,} $
মেলেনি পাঠ্যঃ a1b234ABC
ম্যাচিংয়ের ফলাফলঃa1b234ABC
মেলে পাঠ্যঃ +a1b23=4ABC ম্যাচিংয়ের ফলাফলঃ +a1b23=4ABC বিশ্লেষণঃ ^[0-9a-zA-Z]{4,} $ একটি সংখ্যা বা অক্ষর দিয়ে গঠিত একটি ম্যাচ, এবং বিট বৃহত্তর চার বিট সমান স্ট্রিং;
বিঃদ্রঃঃ যদি সেট শুরুতে থাকে তবে ^ নেগেটিভ; যদি সেটের বাইরে থাকে তবে স্ট্রিংয়ের শুরুতে এটি মেলে। আপনি [^0-9] এবং ^[0-9] এর পার্থক্যটি চেষ্টা করতে পারেন।
তবে √?m) বহু-রেখা মোড সক্ষম করা যায়। বহু-রেখা মোডে, নিয়মিত এক্সপ্রেশন ইঞ্জিনগুলি স্ট্রিংয়ের বিভাজক হিসাবে রূপান্তরিত লাইন চিহ্নগুলি ব্যবহার করে, ^ পাঠ্যের শুরু বা একটি লাইনের শুরুতে মেলে, এবং $ পাঠ্যের শেষ বা একটি লাইনের শেষে মেলে।
এই উদাহরণটি সংশোধন করুনঃ
নিয়মিত অভিব্যক্তিঃ ((?m) ^ [0-9a-zA-Z]{4,}$
মেলেনি পাঠ্যঃ a1b234ABC +a1b23=4ABC ABC123456
ম্যাচিংয়ের ফলাফলঃa1b234ABC
+a1b23=4ABCABC123456
বিশ্লেষণঃ ((?m) ^ [0-9a-zA-Z]{4,}$ প্রতি লাইনে ব্যবহৃত সংখ্যা বা অক্ষরগুলির সাথে মেলে, এবং সংখ্যাটি চারটি সংখ্যার সমান স্ট্রিংয়ের চেয়ে বড়।
দ্রষ্টব্যঃ যদি বহু-রেখা মোড ব্যবহার করা হয়, তবে ((?m) অবশ্যই নিয়মিত অভিব্যক্তির শুরুতে স্থাপন করা উচিত।
(?m) বেশিরভাগ রুটিন এক্সপ্রেশন বাস্তবায়নগুলিতে সমর্থিত নয়; কিছু রুটিন এক্সপ্রেশন বাস্তবায়নগুলিও \A মেলে স্ট্রিংয়ের শুরু এবং \Z মেলে স্ট্রিংয়ের শেষের জন্য সমর্থন করে। যদি সমর্থিত হয় তবে এই মেটাক্যারেক্টরগুলির কার্যকারিতা ^, $ এর সাথে একই হয়। তবে এই মেটাক্যারেক্টরগুলি একটি
আইওএস_চোসঙ্কো থেকে পুনর্নির্দেশিত