String.contains
String.containsস্ট্রিং, পিরিয়ডের সাথে কাজ করে। এটি রেজেক্সের সাথে কাজ করে না। এটি নির্দিষ্ট স্ট্রিং বর্তমান স্ট্রিংয়ে প্রদর্শিত হবে কিনা তা যাচাই করবে।
নোট যে String.containsশব্দের সীমা পরীক্ষা করে না; এটি কেবল সাবস্ট্রিংয়ের জন্য পরীক্ষা করে।
রেজেক্স সমাধান
রেগেক্স এর চেয়ে বেশি শক্তিশালী String.contains, যেহেতু আপনি কীওয়ার্ডগুলিতে শব্দের সীমানা (অন্যান্য জিনিসগুলির মধ্যে) প্রয়োগ করতে পারেন। এর অর্থ আপনি কেবল সাবস্ট্রিংয়ের পরিবর্তে কীওয়ার্ডগুলিকে শব্দ হিসাবে সন্ধান করতে পারেন ।
String.matchesনিম্নলিখিত রেজেক্স সহ ব্যবহার করুন :
"(?s).*\\bstores\\b.*\\bstore\\b.*\\bproduct\\b.*"
RAW regex (স্ট্রিং আক্ষরিক অর্থে পালানো সরিয়ে ফেলুন - আপনি উপরের স্ট্রিংটি মুদ্রণ করলে আপনি এটি পাবেন):
(?s).*\bstores\b.*\bstore\b.*\bproduct\b.*
\bশব্দ সীমানা জন্য চেক, যাতে আপনার জন্য একটি ম্যাচ পাবেন না restores store products। নোটটিও stores 3store_productপ্রত্যাখ্যান করা হয়েছে, যেহেতু অঙ্ক এবং _এটি একটি শব্দের অংশ হিসাবে বিবেচিত হয়, তবে আমি সন্দেহ করি যে এই মামলাটি প্রাকৃতিক পাঠ্যে উপস্থিত রয়েছে।
যেহেতু উভয় পক্ষের জন্য শব্দের সীমানা পরীক্ষা করা হয়েছে, উপরের রেজেক্স সঠিক শব্দগুলির জন্য অনুসন্ধান করবে। অন্য কথায়, stores stores productউপরের রেজেক্সের সাথে মেলে না, যেহেতু আপনি শব্দটি storeছাড়া সন্ধান করছেন s।
.সাধারণত অনেকগুলি নতুন লাইনের অক্ষর ব্যতীত যে কোনও অক্ষরের সাথে মিল থাকে । শুরুতে ব্যতিক্রম ছাড়াই কোনও চরিত্রের সাথে মেলে তোলে (এটি নির্দেশ করার জন্য টিম পিটজ্যাকারকে ধন্যবাদ)।(?s).
(?s)স্ট্রিংয়ে নতুন লাইন রয়েছে সে ক্ষেত্রে আপনি আপনার রেজেক্সের শুরুতে যুক্ত করতে চাইতে পারেন ।