Überlappende Übereinstimmungen in R

Ich habe gesucht und konnte dieses @ findForum Diskussion um den Effekt von überlappenden Übereinstimmungen zu erzielen.

Ich fand auch die folgendenS frage über das Finden von Indizes für diese Aufgabe, konnte jedoch keine präzise Aussage über das Erfassen überlappender Übereinstimmungen in der R-Sprache treffen.

Ich kann diese Aufgabe in fast jeder Sprache ausführen, die PCRE) Verwenden einer positiven Lookahead-Zusicherung, während eine Erfassungsgruppe im Lookahead implementiert wird, um die überlappenden Übereinstimmungen zu erfassen.

Aber während ich das genauso mache, wie ich es in anderen Sprachen machen würde, benutze ichperl=T in R ergeben sich keine Ergebnisse.

> x <- 'ACCACCACCAC'
> regmatches(x, gregexpr('(?=([AC]C))', x, perl=T))[[1]]
[1] "" "" "" "" "" "" ""

Das gleiche gilt für die Verwendung der beidenstringi undstringr package.

> library(stringi)
> library(stringr)
> stri_extract_all_regex(x, '(?=([AC]C))')[[1]]
[1] "" "" "" "" "" "" ""
> str_extract_all(x, perl('(?=([AC]C))'))[[1]]
[1] "" "" "" "" "" "" ""

Die korrekten Ergebnisse, die bei dieser Ausführung zurückgegeben werden sollten, sind:

[1] "AC" "CC" "AC" "CC" "AC" "CC" "AC"
Bearbeite

Ich bin mir bewusst, dassregmatches funktioniert nicht gut mit erfassten Übereinstimmungen, aber wasgena verursacht dieses Verhalten in Regmatches und warum werden keine Ergebnisse zurückgegeben?Ich suche nach einer etwas detaillierten Antwort.

Ist derstringi undstringr -Paket kann dies nicht über @ ausführregmatches?

Bitte zögern Sie nicht, meine Antwort zu ergänzen oder eine andere Problemumgehung zu finden, als ich gefunden habe.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage