String.contains
String.contains
String, nokta ile çalışır. Normal ifadeyle çalışmaz. Belirtilen tam String'in geçerli String'de görünüp görünmediğini kontrol edecektir.
String.contains
Kelime sınırını kontrol etmediğini unutmayın ; sadece alt dizeyi kontrol eder.
Regex çözümü
Normal ifade, String.contains
anahtar kelimelere (diğer şeylerin yanı sıra) kelime sınırı uygulayabileceğinizden daha güçlüdür . Bu, anahtar kelimeleri alt dizeler yerine sözcükler olarak arayabileceğiniz anlamına gelir .
String.matches
Aşağıdaki normal ifadeyle kullanın :
"(?s).*\\bstores\\b.*\\bstore\\b.*\\bproduct\\b.*"
RAW regex (dize değişmezinde yapılan kaçışları kaldırın - yukarıdaki dizeyi yazdırdığınızda elde ettiğiniz şey budur):
(?s).*\bstores\b.*\bstore\b.*\bproduct\b.*
\b
Eğer bir eşleşme alamadım böylece kelime sınırı olup olmadığını kontrol eder, restores store products
. Rakamdan dolayı stores 3store_product
reddedildiğini ve _
bir kelimenin parçası olarak kabul edildiğini unutmayın, ancak bu durumun doğal metinde göründüğünden şüpheliyim.
Kelime sınırı her iki taraf için de kontrol edildiğinden, yukarıdaki normal ifade tam kelimeleri arayacaktır. Başka bir deyişle, stores stores product
kelimenin arıyor beri, yukarıdaki regex maç olmayacak store
olmadan s
.
.
normalde birkaç yeni satır karakteri dışında herhangi bir karakterle eşleşir . Başlangıçta istisnasız herhangi bir karakterle eşleşmeler yapar (bunu işaret ettiği için Tim Pietzcker'a teşekkürler).(?s)
.
(?s)
Dize yeni satırlar içeriyorsa, normal ifadenizin başına eklemek isteyebilirsiniz .