Ich bin mir ziemlich sicher, dass ich etwas offensichtlich hier fehlt bin, aber ich kann nicht R machen zu verwenden, nicht gierige reguläre Ausdrücke:Nicht gierig String regulären Ausdruck entspricht
> library(stringr)
> str_match('xxx aaaab yyy', "a.*?b")
[,1]
[1,] "aaaab"
Basisfunktionen verhalten sich auf die gleiche Weise:
> regexpr('a.*?b', 'xxx aaaab yyy')
[1] 5
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
ich das Spiel erwarten würde nur ab
nach 'gierig' Kommentar in http://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html sein:
Standardmäßig ist die Wiederholung gierig, also wird die maximal mögliche Anzahl von Wiederholungen verwendet. Kann durch Anhängen auf "minimal" geändert werden? zum Quantifizierer. (Es gibt weitere quantifiers die ungefähre Anpassung erlauben: siehe TRE-Dokumentation.)
Könnte mir bitte jemand erklären, was los ist?
Aktualisierung. Was verrückt ist, dass in einigen anderen Fällen nicht gierige Muster wie erwartet verhalten:
> 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\">"
Danke @floder - Ich habe komplett vergessen, dass es immer von links zu beginnen beginnt. Die Leute diskutieren schon lange darüber: http://www.nntp.perl.org/group/perl.perl6.language.regex/2000/12/msg507.html –