I Liste der Schlüsselwörter müssen passt durch den Benutzer eingegeben und können sie enthält die Sonderzeichen wie $, #, @, ^, &,
usw.Java Regular Expression Exact Wort mit Sonderzeichen
Wie pro meine Anforderung wann immer ich Liste von Textnachrichten empfangen i müssen nach allen Schlüsselwörtern in jeder Nachricht suchen.
Wir müssen genau passendes Keyword entsprechen.
FALL 1: Einfache Keyword - Simple Message
verwendete ich \b
genaue Stichwort passen und es arbeitet in Ordnung.
public static void main(String[] args) {
String patternStr = "(?i)\\bHello\\b";
Pattern pattern = Pattern.compile(patternStr);
List<String> strList = new ArrayList<String>();
strList.add("HHello Message");
strList.add("This is Hello Message ");
strList.add("Now Hellos again.");
for(String str : strList) {
Matcher matcher = pattern.matcher(str);
System.out.println(">> "+matcher.find());
}
}
OUTPUT Erwartet als
>> false
>> true
>> false
FALL 2: Einfache Keyword - Nachricht mit Sonderzeichen
Nun, wenn ich über denselben Code ausführen für Nachrichten dann folgende hat nicht funktioniert wie erwartet.
List<String> strList = new ArrayList<String>();
strList.add("#Hello Message");
strList.add("This is Hello Message ");
strList.add("Now Hellos again.");
OUTPUT:
true
true
false
erwartete Ausgabe
false
true
false
FALL 3: Stichwort & Nachricht mit Sonderzeichen
Wenn ich folgende Nachrichten erhalte und das Schlüsselwort lautet #Hello
. Ich schrieb folgenden Code, aber es hat nicht funktioniert.
public static void main(String[] args) {
String patternStr = "(?i)\\b#Hello\\b";
Pattern pattern = Pattern.compile(patternStr);
List<String> strList = new ArrayList<String>();
strList.add("HHello Message");
strList.add("This is #Hello Message ");
strList.add("Now Hellos again.");
for(String str : strList) {
Matcher matcher = pattern.matcher(str);
System.out.println(">> "+matcher.find());
}
}
OUTPUT:
>> false
>> false
>> false
erwartete Ausgabe:
>> false
>> true
>> false
Wie kann ich die Sonderzeichen entkommen und CASE 2 and CASE 3
lösen.
Bitte helfen.
Eine Wortgrenze bedeutet keine Raumgrenze. Hier sind Sie verwirrt. – tchrist