Seite 1 von 1

Substring von einem String

Verfasst: Mo Dez 14, 2020 9:57 am
von steven_y
Hallo,

ich möchte den Substring von einem String extrahieren. Bisher verwende ich sub und gsub. Problem ist allerdings, dass sich der Separator wiederholt.

Code: Alles auswählen

a<-"text_wichtig_text"
Hier möchte ich nun nur das Wort "wichtig" extrahieren. Mit der Position zu arbeiten geht nicht, da diese sich ändert. Problem bei subg und gsub ist, dass ich (meines Wissens nach) die Position des Separtors nicht festlegen kann

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 10:00 am
von student
Kennst Du das Paket stringr? Hier ein Beispiel dazu...

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 10:08 am
von bigben
Wir haben jetzt nur ein Beispiel für einen solchen Text. Was ist den die allgemeine Struktur dieser Strings? Wie definierst Du den Teil, den Du extrahieren willst? Gib mal entweder eine sprachliche Definition, was da zu extrahieren ist oder eine ganze Reihe von Beispielen.

LG,
Bernhard

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 10:13 am
von steven_y
Ich glaube mein Problem ist, dass mir nicht klar ist, wie ich das "pattern" codieren kann.

Bei Stack overflow habe ich folgendes gefunden

Code: Alles auswählen

a<-" anything goes here, STR1 GET_ME STR2, anything goes here"

gsub(".*STR1 (.+) STR2.*", "\\1", a)
Ersetze ich jedoch STR1 und STR2 mit "_", klappt es nicht mehr

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 10:37 am
von steven_y
bigben hat geschrieben: Mo Dez 14, 2020 10:08 am Wir haben jetzt nur ein Beispiel für einen solchen Text. Was ist den die allgemeine Struktur dieser Strings? Wie definierst Du den Teil, den Du extrahieren willst? Gib mal entweder eine sprachliche Definition, was da zu extrahieren ist oder eine ganze Reihe von Beispielen.

LG,
Bernhard
Die Struktur des Strings ist variabl, daher ist die Position keine Option. Daher soll zwischen den beiden Separatoren "_" extrahiert werden.

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 11:43 am
von bigben
steven_y hat geschrieben: Mo Dez 14, 2020 10:37 amDaher soll zwischen den beiden Separatoren "_" extrahiert werden.
Das wollte ich lesen. Wie gefällt Dir das hier?

Code: Alles auswählen

test <- c("abc_hallo_dfg", "()%_Du_l","du_da_123", "123_!_444", "schubidu", "greedy_greedy_greedy_greedy")


library(stringi)
stri_extract_all_regex(test, "_.+_")
LG,
Bernhard

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 11:50 am
von steven_y
Fast am Ziel, danke. Letztes Problem ist, dass die Separtoren mit extrahiert werden.

Code: Alles auswählen

 
 a<-"text_wichtig_text"
 b <- stri_extract_all_regex(a, "_.+_")
 
Statt "_wichtig_" möchte ich "wichtig"

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 12:20 pm
von bigben
steven_y hat geschrieben: Mo Dez 14, 2020 11:50 amStatt "_wichtig_" möchte ich "wichtig"
Du bekommst beides mit

Code: Alles auswählen

stri_match_all_regex(test, "_(.+)_")
LG,
Bernhard

Re: Substring von einem String

Verfasst: Mo Dez 14, 2020 1:07 pm
von bigben
Nachtrag: Das hier ist ganz gut und Liefert praktischerweise einen Vektor anstelle einer Liste:

Code: Alles auswählen

test <- c("abc_hallo_dfg", "()%_Du_l","du_da_123", "123_!_444", "schubidu", "greedy_greedy_greedy_greedy")


library(stringi)
trimws(stri_extract_all_regex(test, "_.+_"), whitespace = "_")
LG,
Bernhard