Perché Python ha sia "match" che "search"?

-2

Il re.match di Python fa esattamente la stessa cosa di re.search , tranne che aggiunge un \A all'inizio del modello (ovvero corrisponde solo all'inizio della stringa). Qual è il punto di avere un intero altro metodo solo per farlo?

    
posta JoelFan 28.06.2017 - 01:36
fonte

2 risposte

1

Come da documentazione di Python:

Python offers two different primitive operations based on regular expressions: re.match() checks for a match only at the beginning of the string, while re.search() checks for a match anywhere in the string (this is what Perl does by default).

For example:

re.match("c", "abcdef") # No match re.search("c", "abcdef") # Match <_sre.SRE_Match object at ...> Regular expressions beginning with '^' can be used with search() to restrict the match at the beginning of the string:

re.match("c", "abcdef") # No match re.search("^c", "abcdef") # No match re.search("^a", "abcdef") # Match <_sre.SRE_Match object at ...> Note however that in MULTILINE mode match() only matches at the beginning of the string, whereas using search() with a regular expression beginning with '^' will match at the beginning of each line.

re.match('X', 'A\nB\nX', re.MULTILINE) # No match re.search('^X', 'A\nB\nX', re.MULTILINE) # Match <_sre.SRE_Match object at ...>

    
  

Per quanto riguarda il "perché" entrambi esistono, si potrebbe dire che una funzione è usata l'una sull'altra come una questione di convenienza e per rendere più chiara l'intenzione del codice.

    
risposta data 01.01.2018 - 03:07
fonte
0

Sia la corrispondenza che la ricerca sono operazioni per le espressioni regolari. La corrispondenza funziona in modo diverso quando si utilizza "^": "^" all'inizio dell'espressione corrisponde solo quando il motivo appare all'inizio della stringa (indipendentemente dalla modalità). La ricerca funziona come la ricerca in Perl.

Per quanto riguarda il motivo, ad esempio, utilizzerei la ricerca per trovare un'espressione quando non sono sicuro che esista e abbinare quando ho bisogno di vedere quella stringa esatta, forse per la modifica dei dati.

    
risposta data 31.12.2017 - 13:14
fonte

Leggi altre domande sui tag