2015-05-02 16 views

risposta

17

Il documentation for Matcher.lookingAt spiega chiaramente la regione lookingAt cerca di far corrispondere:

Come il metodo matches, questo metodo inizia sempre all'inizio della regione; a differenza di questo metodo, non richiede che l'intera regione sia abbinata.

Quindi no, lookingAt non richiede la corrispondenza dell'intera stringa. Allora qual è la differenza tra lookingAt e find? Dalla Matcher Javadoc overview:

  • Procedimento matches tenta di corrispondere l'intera sequenza di ingresso contro il pattern.
  • Il metodo lookingAt tenta di far corrispondere la sequenza di input, iniziando dall'inizio, contro il modello.
  • Il metodo find analizza la sequenza di input alla ricerca della sottosequenza successiva che corrisponde al modello.

lookingAt comincia sempre all'inizio, ma find cercherà un posizione di partenza.

Un altro modo, matches ha un inizio e una fine fissi, lookingAt ha un inizio fisso ma una fine variabile, e find ha una variabile di inizio e fine.

+0

Grazie i dettagli sono belli! :) Anche l'utilizzo delle corrispondenze e dei metodi lookingAt del tutorial tocca anche questo argomento: https://docs.oracle.com/javase/tutorial/essential/regex/matcher.html –

1

lookingAt() inizia sempre a controllare dall'inizio e restituisce true quando incontra una corrispondenza.

find() può trovare più corrispondenze, poiché memorizza la posizione corrente, proprio come un iteratore.

Chi find() da http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#find%28%29:

Questo metodo comincia all'inizio della regione di questo matcher, o, nel caso di una chiamata precedente del metodo ha avuto successo e il matcher non da allora è stato ripristinato, al primo carattere non corrisponde alla partita precedente.

Problemi correlati