বাই ডিফল্ট রেগুলার এক্সপ্রেশন হয় Greedy, অর্থাৎ quantifier (.*, অন্যান্য) যত character পায় ততই consume করে যেমন xxxxzzzz, এখানে ৪ টা x এবং ৪ টা z, এখানে আমি যদি (.*) ব্যবহার করি এটা সবগুলি character
নিয়া নিবে, যেমন এই প্যাটার্ন = "/(.*)(z+)/" সবগুলি নিতে চায় তবে যেহেতু z+ পরে ব্যবহার করা হইয়াছে তাই বেচারা z+ জন্য একটা z রেখে সবগুলু x এবং z নিয়া নেয়। তবে ইন্টারেষ্টিং হলো এখানে যদি z* ব্যবহার করা হত .* সবগুলি character নিয়ে নিত।
নিয়া নিবে, যেমন এই প্যাটার্ন = "/(.*)(z+)/" সবগুলি নিতে চায় তবে যেহেতু z+ পরে ব্যবহার করা হইয়াছে তাই বেচারা z+ জন্য একটা z রেখে সবগুলু x এবং z নিয়া নেয়। তবে ইন্টারেষ্টিং হলো এখানে যদি z* ব্যবহার করা হত .* সবগুলি character নিয়ে নিত।
<?php
/*** 4 x and 4 z chars ***/
$string = "xxxxzzzz";
/*** greedy regex ***/
preg_match("/^(.*)(z+)$/",$string,$matches);
/*** results ***/
echo $matches[1];
echo "<br />";
echo $matches[2];
?>
No comments:
Post a Comment