Risposte:
Se desideri far corrispondere solo le righe che iniziano con stop, usa
^stop
Se desideri far corrispondere le righe che iniziano con la parola stop seguita da uno spazio
^stop\s
Oppure, se desideri abbinare le righe che iniziano con la parola stop ma seguite da uno spazio o da qualsiasi altro carattere non alfanumerico che puoi usare (il tuo gusto regex lo consente)
^stop\W
D'altra parte, ciò che segue corrisponde a una parola all'inizio di una stringa nella maggior parte dei gusti di espressioni regolari (in questi gusti \ w corrisponde all'opposto di \ W)
^\w
Se il tuo gusto non ha la scorciatoia \ w, puoi usare
^[a-zA-Z0-9]+
Fai attenzione che questo secondo idioma corrisponderà solo a lettere e numeri, nessun simbolo di sorta.
Controlla il manuale delle espressioni regolari per sapere quali scorciatoie sono consentite e cosa corrispondono esattamente (e come si comportano con Unicode).
^stop\b, che consentirebbe qualsiasi confine, inclusa la fine della linea
Prova questo:
/^stop.*$/
Spiegazione:
Se desideri imporre che l'interruzione sia seguita da uno spazio bianco, puoi modificare la RegEx in questo modo:
/^stop\s+.*$/
Nota: tieni anche presente che la RegEx sopra richiede che la parola di stop sia seguita da uno spazio! Quindi non corrisponderebbe a una riga che contiene solo: stop
Se vuoi trovare una corrispondenza dopo una parola, interrompi e non solo all'inizio della riga puoi usare: \bstop.*\b- parola seguita da riga
Oppure, se si desidera far corrispondere la parola nell'uso stringa \bstop[a-zA-Z]*- solo le parole che iniziano con arresto
Oppure l'inizio delle righe con stop solo ^stop[a-zA-Z]*per la parola - solo la prima parola
L'intera riga ^stop.*- solo la prima riga della stringa
E se vuoi far corrispondere ogni stringa che inizia con stop includendo le nuove righe usa: /^stop.*/s- stringa multilinea che inizia con stop
Come ha detto @SharadHolani. Non corrisponderà a tutte le parole che iniziano con " stop "
. Solo se è all'inizio di una riga come " smetti di andare ". @Waxo ha dato la risposta giusta:
Questo è un po ' meglio, se si vuole adattarsi a qualsiasi parola che inizia con " arresto " e che contiene nulla, ma le lettere da A a Z .
\bstop[a-zA-Z]*\b
Questo corrisponderebbe a tutto
stop (1)
stop random (2)
arresto (3)
voglio smettere (4)
per favore smettila (5)
Ma
/^stop[a-zA-Z]*/
corrisponderebbe solo a (1) fino a (3), ma non (4) e (5)
/stop([a-zA-Z])+/
Corrisponderà a qualsiasi parola di arresto (arresto, interrotto, arresto, ecc.)
Tuttavia, se vuoi solo far corrispondere "stop" all'inizio di una stringa
/^stop/
farà: D
Sconsiglierei un semplice approccio con espressioni regolari a questo problema. Ci sono troppe parole che sono sottostringhe di altre parole non correlate, e probabilmente ti farai impazzire cercando di adattare le soluzioni più semplici già fornite.
Avrai bisogno almeno di un algoritmo di stemming ingenuo (prova lo stemmer di Porter; c'è codice disponibile e gratuito nella maggior parte delle lingue) per elaborare prima il testo. Mantieni questo testo elaborato e il testo preelaborato in due matrici separate in spazi separati. Assicurati che ogni carattere non alfabetico abbia anche il proprio indice in questo array. Qualunque sia l'elenco di parole che stai filtrando, stemperalo anche.
Il passo successivo sarebbe trovare gli indici dell'array che corrispondono al tuo elenco di parole "stop" con radice. Rimuovere quelli dall'array non elaborato e quindi ricongiungersi agli spazi.
Questo è solo leggermente più complicato, ma sarà un approccio molto più affidabile. Se hai dei dubbi sul valore di un approccio più orientato alla PNL, potresti voler fare qualche ricerca sugli errori clbuttici .
Se vuoi che la parola inizi con "stop", puoi utilizzare il seguente schema. "^fermare.*"
Ciò corrisponderà alle parole che iniziano con stop seguite da qualsiasi cosa.
"^stop"?
code String line = "stopped"; String pattern = "^stop"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(line); System.out.println(m.find( )); //prints true System.out.println(line.matches(pattern)); //prints false