String.contains
String.contains
arbeitet mit String, Punkt. Es funktioniert nicht mit Regex. Es wird geprüft, ob die genaue angegebene Zeichenfolge in der aktuellen Zeichenfolge angezeigt wird oder nicht.
Beachten Sie, dass String.contains
nicht nach Wortgrenzen gesucht wird. es wird einfach nach Teilzeichenfolgen gesucht.
Regex-Lösung
Regex ist leistungsfähiger als String.contains
, da Sie (unter anderem) Wortgrenzen für die Schlüsselwörter erzwingen können. Dies bedeutet, dass Sie nach den Schlüsselwörtern als Wörter und nicht nur nach Teilzeichenfolgen suchen können .
Verwenden Sie String.matches
mit dem folgenden regulären Ausdruck:
"(?s).*\\bstores\\b.*\\bstore\\b.*\\bproduct\\b.*"
Die RAW-Regex (entfernen Sie das im Zeichenfolgenliteral vorgenommene Escapezeichen - dies erhalten Sie, wenn Sie die obige Zeichenfolge ausdrucken):
(?s).*\bstores\b.*\bstore\b.*\bproduct\b.*
Die \b
prüft auf Wortgrenze, damit Sie keine Übereinstimmung für bekommen restores store products
. Beachten Sie, dass dies stores 3store_product
ebenfalls abgelehnt wird, da Ziffern und _
als Teil eines Wortes betrachtet werden, aber ich bezweifle, dass dieser Fall im natürlichen Text erscheint.
Da die Wortgrenze für beide Seiten aktiviert ist, sucht der Regex oben nach genauen Wörtern. Mit anderen Worten, stores stores product
stimmt nicht mit dem obigen regulären Ausdruck überein, da Sie nach dem Wort store
ohne suchen s
.
.
Normalerweise stimmen alle Zeichen mit Ausnahme einiger neuer Zeilenzeichen überein . (?s)
zu Beginn .
passt jeder Charakter ausnahmslos zusammen (danke an Tim Pietzcker für den Hinweis).
(?s)
den Anfang Ihrer Regex hinzufügen , falls die Zeichenfolge Zeilenumbrüche enthält.