Sono abbastanza sicuro che mi manca qualcosa di ovvio qui, ma non posso fare R per uso non avidi espressioni regolari:stringa non avido espressione regolare che corrisponde
> library(stringr)
> str_match('xxx aaaab yyy', "a.*?b")
[,1]
[1,] "aaaab"
funzioni base si comportano allo stesso modo:
> regexpr('a.*?b', 'xxx aaaab yyy')
[1] 5
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
mi aspetterei la partita di essere solo ab
come da commento 'avidi' in http://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html:
Per impostazione predefinita la ripetizione è ingorda, quindi viene utilizzato il numero massimo possibile di ripetizioni. Questo può essere modificato in "minimo" aggiungendo? al quantificatore. (Ci sono ulteriori quantificatori che permettono di corrispondenza approssimativa: vedere la documentazione TRE.)
Qualcuno potrebbe spiegare che cosa sta succedendo?
Aggiornamento . Che cosa è folle è che in alcuni altri casi i modelli non avidi si comportano come previsto:
> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*>')
[,1]
[1,] "<a href=\"abc\">link</a> yyy <h1>Header</h1>"
> str_match('xxx <a href="abc">link</a> yyy <h1>Header</h1>', '<a.*?>')
[,1]
[1,] "<a href=\"abc\">"
Grazie @floder - Ho completamente dimenticato che inizia sempre la corrispondenza da sinistra. Le persone lo stanno discutendo da molto tempo: http://www.nntp.perl.org/group/perl.perl6.language.regex/2000/12/msg507.html –