当我们有多个反斜杠和/特殊字符时Gsubing

问题描述 投票:0回答:1

我有一个字符串,我想在其中离开城市,在本例中它将是“Elland Rd”和“Leeds”。

mystring = "0000\" club_info=\"Elland Rd, Leeds\" Pitch=\"100x50\""
city = gsub(".* club_info=\"(.*),(.+)\.*", "\\2", mystring) #cant get this part to work

我获取城市背后的理论是搜索逗号之后直到反斜杠的所有内容,但我似乎无法让它识别反斜杠

r gsub
1个回答
1
投票

我更喜欢

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()
添加到管道即可。

© www.soinside.com 2019 - 2024. All rights reserved.