?regex
Zwei reguläre Ausdrücke können |
durch den Infixoperator verbunden werden; Der resultierende reguläre Ausdruck entspricht einer Zeichenfolge, die mit einem Unterausdruck übereinstimmt. Beispiel: abba|cde
entspricht entweder der Zeichenfolge abba
oder der Zeichenfolge cde
. Beachten Sie, dass Alternation nicht innerhalb von Zeichenklassen funktioniert, wobei |
seine wörtliche Bedeutung hat.
Die grundlegenden Bausteine sind die regulären Ausdrücke, die einem einzelnen Zeichen entsprechen. Die meisten Zeichen, einschließlich aller Buchstaben und Ziffern, sind reguläre Ausdrücke, die sich selbst entsprechen. Jedes Metazeichen mit spezieller Bedeutung kann durch vorangestelltes Backslash zitiert werden. Die Metazeichen in erweiterten regulären Ausdrücken sind . \ | () [ {^$ * + ?
, aber beachten Sie, dass diese abhängig vom Kontext eine besondere Bedeutung haben.
So:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}', "\\|")
Wie @Frank erwähnt, können Sie dies, indem Sie die fixed=TRUE
in base::strsplit()
tun:
strsplit('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',"|", fixed=TRUE)
Sie können aber auch dies mit stringr::str_split()
durch die Dekoration der reguläre Ausdruck für das Trennzeichen:
Übrigens
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',
regex("|", literal=TRUE))
ist stringr
so ziemlich nur leicht freundlicher Wrapper stringi
Funktionen an dieser Stelle und ich empfehle das Studium der stringi
Paket, wie es einige wunderbare Edelsteine außerhalb der Zeichenfolge spiltting enthält.
PS: Die Split-Funktion spaltet diese Zeichenfolge überhaupt nicht, wenn | wird als Trennzeichen verwendet. – CLM
Was hast du versucht, das ist fehlgeschlagen? – hrbrmstr
Hast du versucht es zu entkommen? zB, \\ | ' – aosmith