ho elenco di parole chiave inserite dall'utente e possono contiene i caratteri speciali come $, #, @, ^, &,
eccJava espressioni regolari per Corrispondenza esatta della parola con caratteri speciali
Come per la mia esigenza quando mai ricevo elenco di messaggi di testo che è necessario cercare tutte le parole chiave in ogni messaggio.
Abbiamo bisogno di corrispondenza esatta parola chiave.
CASO 1: Parola chiave semplice - Simple Message
ho usato \b
per abbinare parola chiave esatta e funziona bene.
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());
}
}
USCITA come previsto
>> false
>> true
>> false
CASO 2: Parola chiave semplice - Messaggio con Carattere speciale
Ora, se corro sopra lo stesso codice per seguire i messaggi allora non ha funzionato come previsto.
List<String> strList = new ArrayList<String>();
strList.add("#Hello Message");
strList.add("This is Hello Message ");
strList.add("Now Hellos again.");
USCITA:
true
true
false
risultati attesi
false
true
false
CASO 3: Parola chiave & messaggio con caratteri speciali
Se ricevo i seguenti messaggi e la parola chiave è #Hello
. Ho scritto il seguente codice ma lo non ha funzionato.
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());
}
}
USCITA:
>> false
>> false
>> false
risultato atteso:
>> false
>> true
>> false
Come posso sfuggire i caratteri speciali e risolvere CASE 2 and CASE 3
.
Per favore aiuto.
Un limite di parole non significa un limite di spazio. Questo è dove sei confuso. – tchrist