Sie den folgenden Basen R-Code verwenden können 1+ andere Zeichen als .
([^.]+
) nach den ersten @
zu extrahieren:
> t <- "Current CPU load - jvm machine[example network-app_svc_group_mem4]@server101.example.com"
> pattern="@([^.]+)"
> m <- regmatches(t,regexec(pattern,t))
> result = unlist(m)[2]
> result
[1] "server101"
Mit regexec
, können Sie Zugriff auf Submatches (Erfassen von Gruppeninhalten).
Siehe online R demo
Ein anderer Weg regmatches
/regexpr
mit PCRE regex mit einem (?<[email protected])
Lookbehind, die nur prüfen, ob die Zeichen Anwesenheit zu verwenden ist, aber nicht den Charakter in das Spiel hat gesagt:
> result2 <- regmatches(t, regexpr("(?<[email protected])[^.]+", t, perl=TRUE))
> result2
[1] "server101"
Eine saubere stringr Ansatz wäre, die gleiche PCRE Regex mit str_extract
(die eine ähnliche verwendet (weil es auch Lookarounds unterstützt), ICU, Regex Geschmack):
> library(stringr)
> t<-c("Current CPU load - jvm machine[example network-app_svc_group_mem4]@server101.example.com")
> str_extract(t, "(?<[email protected])[^.]+")
[1] "server101"
'gsub ('@ ([. ^] +) |', '\\ 1', t)' – rawr