String.contains
String.containsस्ट्रिंग के साथ काम करता है, अवधि। यह regex के साथ काम नहीं करता है। यह जांच करेगा कि वर्तमान स्ट्रिंग में निर्दिष्ट स्ट्रिंग सही है या नहीं।
ध्यान दें कि String.containsशब्द सीमा के लिए जाँच नहीं करता है; यह केवल प्रतिस्थापन के लिए जाँच करता है।
रेगेक्स समाधान
रेगेक्स की तुलना में अधिक शक्तिशाली है String.contains, क्योंकि आप कीवर्ड (अन्य चीजों के बीच) पर शब्द सीमा को लागू कर सकते हैं। इसका अर्थ है कि आप कीवर्ड्स को केवल सब्स्टिट्यूटिंग के बजाय शब्दों के रूप में खोज सकते हैं ।
String.matchesनिम्नलिखित regex के साथ प्रयोग करें :
"(?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)स्ट्रिंग में नई सुर्खियाँ हैं, तो आप अपने regex की शुरुआत में जोड़ना चाह सकते हैं ।