我有一个字符串,我想在其中离开城市,在本例中它将是“Elland Rd”和“Leeds”。
mystring = "0000\" club_info=\"Elland Rd, Leeds\" Pitch=\"100x50\""
city = gsub(".* club_info=\"(.*),(.+)\.*", "\\2", mystring) #cant get this part to work
我获取城市背后的理论是搜索逗号之后直到反斜杠的所有内容,但我似乎无法让它识别反斜杠
我更喜欢
strcapture
提取多个重复的模式 gsub
ing,这样怎么样?
strcapture('.*club_info="([^"]+),([^"]+)".(.*)', mystring, list(x1="", x2="", x3=""))
# x1 x2 x3
# 1 Elland Rd Leeds Pitch="100x50"
(不需要在其中包含
Pitch=
,但我认为你可以使用它,因为看起来你正在做还原 gsub
ing。)
仅供参考,
x2
这里有一个前导空格;它可以在正则表达式中处理,但如果你不是 100% 肯定它在所有情况下都是如此,那么添加 trimws(.)
可能会更简单,如
strcapture('.*club_info="([^"]+),([^"]+)".(.*)', mystring, list(x1="", x2="", x3="")) |>
lapply(trimws)
# $x1
# [1] "Elland Rd"
# $x2
# [1] "Leeds"
# $x3
# [1] "Pitch=\"100x50\""
在这种情况下,它确实从
data.frame
下降到list
,但我不确定你需要一个框架,一个命名列表就足够了。如果你真的想要它作为一个框架 --- 而且我的许多用例确实更喜欢 --- 只需将 |> as.data.frame()
添加到管道即可。