উত্তর:
স্কয়ার বন্ধনী চরিত্র বর্গ জন্য বোঝানো হয়, এবং আপনি আসলে যে কোনো একটি মেলে করার চেষ্টা করছেন: s
, |
, s
(আবার), e
, a
, s
(আবার), o
এবং n
।
গ্রুপিংয়ের পরিবর্তে প্রথম বন্ধনী ব্যবহার করুন:
(s|season)
বা নন-ক্যাপচারিং গ্রুপ:
(?:s|season)
দ্রষ্টব্য: নন-ক্যাপচার গ্রুপগুলি ইঞ্জিনকে বলে যে এটি ম্যাচ সঞ্চয় করার দরকার নেই, অন্যদিকে (ক্যাপচারিং গ্রুপটি করে)। ছোট জিনিসগুলির জন্য, হয় কাজ করে, 'ভারী শুল্ক' স্টাফের জন্য, আপনি ম্যাচটি প্রয়োজন কিনা তা আপনি প্রথমে দেখতে চাইতে পারেন। যদি আপনি এটি না করেন, এমন কিছু সঞ্চয় করার পরিবর্তে গণনার জন্য আরও মেমরি বরাদ্দ করার জন্য নন-ক্যাপচার গ্রুপটিকে আরও ভালভাবে ব্যবহার করুন যা আপনাকে কখনও ব্যবহারের প্রয়োজন হবে না।
?:
ভিতরে ওরফে গোষ্ঠীবদ্ধ non-capturing
শুধু বলছেন, যে আপনার সাথে মিলেছে এক্সপ্রেশন ব্যবহার করতে পারবেন না $1
, $2
এবং তাই ... যদি তুমি চাও একটি অভিব্যক্তি মেলে না, কি আপনার প্রয়োজন হয় ^
।
(?! ... )
কোনওটির সাথে মেলে না নিতে চান তবে আপনি ইনসাইড ব্যবহার করবেন, (?!s|season)
এই ক্ষেত্রে এর অর্থ ।
এই লাইভ উদাহরণ থেকে নেওয়া উপরের স্ক্রিনশট: https://regex101.com/r/cU5lC2/1
আমি ব্যবহার করছি phpsh ইন্টারেক্টিভ শেল উপর উবুন্টু 12.10 প্রকট PCRE Regex ইঞ্জিন পদ্ধতি নামে পরিচিত মাধ্যমে preg_match
পিএইচপিএস শুরু করুন, কিছু কন্টেন্টকে ভেরিয়েবলে রেখে শব্দের সাথে মিল দিন।
el@apollo:~/foo$ phpsh
php> $content1 = 'badger'
php> $content2 = '1234'
php> $content3 = '$%^&'
php> echo preg_match('(\w+)', $content1);
1
php> echo preg_match('(\w+)', $content2);
1
php> echo preg_match('(\w+)', $content3);
0
প্রিগ_ম্যাচ পদ্ধতিটি ভেরিয়েবলগুলি বিশ্লেষণ করতে $content1
, $content2
এবং প্যাটার্ন $content3
সহ পিএইচপি ভাষার মধ্যে পিসিআরই ইঞ্জিন ব্যবহার করে (\w)+
।
$ বিষয়বস্তু 1 এবং $ বিষয়বস্তু 2 তে কমপক্ষে একটি শব্দ থাকে, $ সামগ্রী3 থাকে না not
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(dart|fart)', $gun1);
1
php> echo preg_match('(dart|fart)', $gun2);
1
php> echo preg_match('(dart|fart)', $gun3);
1
php> echo preg_match('(dart|fart)', $gun4);
0
ভেরিয়েবল gun1
এবং gun2
স্ট্রিং থাকে dart
বা fart
যা সঠিক, তবে বন্দুক 3 এর মধ্যে রয়েছে darty
এবং এখনও মিল রয়েছে , এটাই সমস্যা। সুতরাং পরবর্তী উদাহরণ সম্মুখের দিকে।
শব্দ সীমানা এর সাথে জোর করে মিলিত হতে পারে \b
, দেখুন:
রেজেক্স ভিজ্যুয়াল চিত্রটি http://jex.im/regulex এবং https://github.com/JexCheng/regulex থেকে অর্জিত উদাহরণ:
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(\bdart\b|\bfart\b)', $gun1);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun2);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun3);
0
php> echo preg_match('(\bdart\b|\bfart\b)', $gun4);
0
\b
দাবি যে আমরা একটি শব্দ সীমানা আছে, নিশ্চিত করুন "ডার্ট" উপার্জন মিলেছে হয়, কিন্তু "darty" নয়।
আমি উদাহরণস্বরূপ জেএসে পরীক্ষা করি। সহজ সমাধান - আপনার / / এর ভিতরে কেবল শব্দটি যুক্ত করুন
var reg = /cat/;
reg.test('some cat here');//1 test
true // result
reg.test('acatb');//2 test
true // result
এখন আপনার যদি সীমা যুক্ত এই নির্দিষ্ট শব্দটির প্রয়োজন হয় তবে অন্য কোনও চিহ্ন-অক্ষরের অভ্যন্তরে নয়। আমরা বি মার্কার ব্যবহার করি :
var reg = /\bcat\b/
reg.test('acatb');//1 test
false // result
reg.test('have cat here');//2 test
true // result
আমাদের জেএসে এক্সিকিউট () পদ্ধতিও রয়েছে, যার ফলে বস্তুর ফলাফল পাওয়া যায়। এটি আমাদের শব্দের স্থান / সূচী সম্পর্কে তথ্য পেতে এফগিকে সহায়তা করে।
var matchResult = /\bcat\b/.exec("good cat good");
console.log(matchResult.index); // 5
আমাদের যদি স্ট্রিং / বাক্য / পাঠ্যে সব মিলিয়ে শব্দগুলি পেতে হয় তবে আমরা জি সংশোধক (গ্লোবাল ম্যাচ) ব্যবহার করতে পারি:
"cat good cat good cat".match(/\bcat\b/g).length
// 3
এখন শেষটি - আমার 1 টি নির্দিষ্ট শব্দের দরকার নেই, তবে এর মধ্যে কয়েকটি। আমরা ব্যবহার করি | চিহ্ন, এর অর্থ পছন্দ / বা।
"bad dog bad".match(/\bcat|dog\b/g).length
// 1
[ ]
একটি চরিত্র শ্রেণি সংজ্ঞায়িত করে। সুতরাং আপনি যে চরিত্রটি সেট করেছেন সেখানে মিলবে। [012]
মিলবে 0
বা 1
বা 2
এবং [0-2]
একই আচরণ করবে।
আপনি যা চান তা হ'ল একটি বিবৃতি বা বিবৃতি সংজ্ঞায়িত করা ings ব্যবহার(s|season)
আপনার সমস্যার জন্য ।
BTW। তোমাকে নজর রাখতে হবে সাধারণ রেজেেক্সে (বা গোষ্ঠীকরণের অভ্যন্তরে) মেটাচার্যাক্টরগুলি অক্ষর শ্রেণীর চেয়ে পৃথক। একটি চরিত্র শ্রেণি একটি উপ-ভাষার মতো। [$A]
কেবল মিলবে $
বা A
, কিছুই নয়। এখানে ডলারের জন্য কোনও রক্ষা নেই।
(season|s)
পরিবর্তে ব্যবহার করুন।[season]
এর কোনো মিলs
,e
,a
,o
,n
।