Text in Klammern in R extrahieren

user2817329

Zwei verwandte Fragen. Ich habe Vektoren von Textdaten wie

"a(b)jk(p)"  "ipq"  "e(ijkl)"

und möchten es einfach in einen Vektor trennen, der den Text AUSSERHALB der Klammern enthält:

"ajk"  "ipq"  "e"

und einen Vektor, der den Text IN den Klammern enthält:

"bp"   ""  "ijkl"

Gibt es eine einfache Möglichkeit, dies zu tun? Eine zusätzliche Schwierigkeit besteht darin, dass diese ziemlich groß werden können und eine große (unbegrenzte) Anzahl von Klammern haben. Daher kann ich nicht einfach Text "vor / nach" in Klammern abrufen und benötige eine intelligentere Lösung.

Avinash Raj

Text außerhalb der Klammer

> x <- c("a(b)jk(p)"  ,"ipq" , "e(ijkl)")
> gsub("\\([^()]*\\)", "", x)
[1] "ajk" "ipq" "e"  

Text in Klammern

> x <- c("a(b)jk(p)"  ,"ipq" , "e(ijkl)")
> gsub("(?<=\\()[^()]*(?=\\))(*SKIP)(*F)|.", "", x, perl=T)
[1] "bp"   ""     "ijkl"

Das (?<=\\()[^()]*(?=\\))stimmt mit allen Zeichen überein, die in den Klammern vorhanden sind, und im Folgenden (*SKIP)(*F)schlägt die Übereinstimmung fehl. Jetzt wird versucht, das Muster auszuführen, das unmittelbar nach dem |Symbol für die verbleibende Zeichenfolge war. Der Punkt .entspricht also allen Zeichen, die noch nicht übersprungen wurden. Wenn Sie alle übereinstimmenden Zeichen durch eine leere Zeichenfolge ersetzen, wird nur der Text in den Schlägern angezeigt.

> gsub("\\(([^()]*)\\)|.", "\\1", x, perl=T)
[1] "bp"   ""     "ijkl"

Diese Regex würde alle Zeichen erfassen, die in den Klammern vorhanden sind, und mit allen anderen Zeichen übereinstimmen. |.oder ein Teil hilft dabei, alle verbleibenden Charaktere außer den erfassten zu finden. Wenn Sie also alle Zeichen durch die Zeichen im Gruppenindex 1 ersetzen, erhalten Sie die gewünschte Ausgabe.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  2. 2

    Wie füge ich mehrere Spalten in einer Spalte mit derselben Tabelle in SQL Server zusammen?

  3. 3

    Wie kann man Gitterquadrate dazu bringen, die Farbe zu ändern?

  4. 4

    Ich kann nicht verstehen, wie man Go-Code in mehreren Dateien kompiliert

  5. 5

    Zählen Sie die Vorkommen jedes Werts in einem Tupel in Python

  6. 6

    Gibt es eine sauberere Möglichkeit, Konstruktorargumente und Instanzeigenschaften einer Klasse in Typescript zu definieren?

  7. 7

    So implementieren Sie Pushwoosh mit ionic 2

  8. 8

    Wie wird der Wert im Dropdown-Menü basierend auf den ausgewählten Daten / IDs angezeigt?

  9. 9

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  10. 10

    Ändern Sie den Knotenpfad in das aktuelle Verzeichnis

  11. 11

    So erstellen Sie ein Array von Objekten aus zwei Arrays von Objekten mit einem gemeinsamen Schlüssel - JavaScript

  12. 12

    Rufen Sie die ID aus der Datagrid-Ansicht ab und zeigen Sie die Daten in Textfeldern einem anderen Formular an

  13. 13

    base js: Wie füge ich einem Objekt eine Eigenschaft auf die 'alte' Weise hinzu?

  14. 14

    Ersetze einen Teil einer Zeichenfolge durch eine Pandas-Spalte als Muster

  15. 15

    Blättern Sie auf Radio Click zur Abschnitts-ID

  16. 16

    CBCentralManager wird nach dem Verbinden neu gestartet

  17. 17

    Scherz, wie man eine Funktion verspottet, die von einer verspotteten Funktion zurückgegeben wird

  18. 18

    django-allauth Empfängersignal zum Hinzufügen einer Gruppenberechtigung zum Benutzer bei der Anmeldung

  19. 19

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  20. 20

    AQL: Teilweise Übereinstimmung in einer Reihe von Zeichenfolgen

  21. 21

    So summieren Sie die Werte zweier Tabellen und gruppieren sie nach Datum

heißlabel

Archiv