___ tag123regex ___ Reguläre Ausdrücke stellen eine deklarative Sprache zur Verfügung, um Muster in Strings zu vergleichen. Sie werden häufig für die Überprüfung, Analyse und Umwandlung von Zeichenfolgen verwendet. Da reguläre Ausdrücke nicht vollständig standardisiert sind, sollten alle Fragen mit diesem Tag auch ein Tag enthalten, das die anwendbare Programmiersprache oder das entsprechende Werkzeug angibt. HINWEIS: Nach HTML-, JSON-, usw.-Regexen zu fragen, neigt zu negativen Reaktionen. Wenn es einen Parser dafür gibt, verwende stattdessen diesen. ___ tag123r ___ R ist eine freie, quelloffene Programmiersprache und Softwareumgebung für statistische Berechnungen, Bioinformatik, Visualisierung und allgemeine Datenverarbeitung. Stellen Sie minimale, reproduzierbare, repräsentative Beispiele für Ihre Fragen bereit. Verwenden Sie dput () für Daten und geben Sie alle Nicht-Basis-Pakete mit Bibliotheksaufrufen an. Bilder für Daten oder Code nicht einbetten, eingerückte Codeblöcke verwenden. Verwenden Sie für statistische Fragen http://stats.stackexchange.com. ___ qstntxt ___

Ich habe eine Zeichenfolge

df

%Vor%

Ich mag zum Beispiel Zeichen zwischen der Parentesie zu erfassen. Ich möchte ID-1290 aus dem obigen Beispiel erhalten.

Ich habe das benutzt:

%Vor%

Das gibt mir Zahlen wie

%Vor%

Gibt es eine einfache Möglichkeit, Text zwischen Parentese mit Regex in R zu greifen?

    
___ answer13498914 ___

Ich bevorzuge %code% dafür:

%Vor%

Die Regex funktioniert so:

  • Suchen Sie nach Text in den Klammern - nicht nach Ihren echten Klammern, sondern nach meinem zusätzlichen Satz Klammern, d. h. %code%
  • Gibt das als Rückverweis zurück, %code%

Mit anderen Worten: Ersetzen Sie den gesamten Text in der Zeichenfolge durch die Zurück-Referenz

Wenn Sie %code% anstatt %code% verwenden möchten, tun Sie Folgendes:

%Vor%

Dies gibt einen Wert von 11 zurück, d. h. die Startposition des gefundenen Ausdrucks. Beachten Sie das Attribut %code% , das angibt, wie viele Zeichen gefunden wurden.

Sie können dies mit %code% :

extrahieren %Vor%

Und dann %code% verwenden, um die Zeichen zu extrahieren:

%Vor%     
___ answer13499594 ___

Hier ist ein etwas anderer Weg, mit Lookbehind / Ahead:

%Vor%

Der Unterschied zu Andries Antwort ist, dass dies auch funktioniert, um mehrere Zeichenfolgen in Klammern zu extrahieren. z.B.:

%Vor%

Gibt:

%Vor%     
___

8

Ich habe eine Zeichenfolge

df

%Vor%

Ich mag zum Beispiel Zeichen zwischen der Parentesie zu erfassen. Ich möchte ID-1290 aus dem obigen Beispiel erhalten.

Ich habe das benutzt:

%Vor%

Das gibt mir Zahlen wie

%Vor%

Gibt es eine einfache Möglichkeit, Text zwischen Parentese mit Regex in R zu greifen?

    
user1471980 21.11.2012, 17:32
quelle

2 Antworten

29

Ich bevorzuge gsub() dafür:

%Vor%

Die Regex funktioniert so:

  • Suchen Sie nach Text in den Klammern - nicht nach Ihren echten Klammern, sondern nach meinem zusätzlichen Satz Klammern, d. h. (.*)
  • Gibt das als Rückverweis zurück, \1

Mit anderen Worten: Ersetzen Sie den gesamten Text in der Zeichenfolge durch die Zurück-Referenz

Wenn Sie regexp anstatt gsub verwenden möchten, tun Sie Folgendes:

%Vor%

Dies gibt einen Wert von 11 zurück, d. h. die Startposition des gefundenen Ausdrucks. Beachten Sie das Attribut match.length , das angibt, wie viele Zeichen gefunden wurden.

Sie können dies mit attr :

extrahieren %Vor%

Und dann substring verwenden, um die Zeichen zu extrahieren:

%Vor%     
Andrie 21.11.2012, 17:36
quelle
2

Hier ist ein etwas anderer Weg, mit Lookbehind / Ahead:

%Vor%

Der Unterschied zu Andries Antwort ist, dass dies auch funktioniert, um mehrere Zeichenfolgen in Klammern zu extrahieren. z.B.:

%Vor%

Gibt:

%Vor%     
Sacha Epskamp 21.11.2012 18:19
quelle

Tags und Links