我有一个字符串,我想在其中离开城市,在本例中它将是‘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运算.)

仅供参考,这里的x2有一个前导空格;它可以在正则表达式中处理,但如果您不是x2%肯定它在所有情况下都是如此,那么添加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,但我不确定need是一个帧,一个命名列表应该足够了.如果您真的想要它作为框架-我的许多用例都很喜欢这样-只需在管道中添加|> as.data.frame()即可.

Regex漫步餐厅.

.*club_info="([^"]+),([^"]+)".(.*)
^^                                  leading/trailing text, discarded
  ^^^^^^^^^^^                       literal text
              [^"]+   [^"]+         one or more "any character except dquote"
             (     ),(     )        two capture-groups

此外,由于我们知道模式中将使用双引号而不是单引号,因此我 Select 使用单引号作为外部字符串定义的分界.如果我们有both个,或者如果你想避免双反斜杠之类的,我们可以使用R的"原始字符串",

r"{.*club_info="([^"]+),([^"]+)".(.*)}"

其中r"{}"是开始/结束分隔符;我在这里 Select 大括号是因为花括号在视觉上与正则括号混淆,尽管方括号r"[/]"和圆括号r"(/)"也可以.

R相关问答推荐

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

根据shiny 应用程序中的数字输入更改图标 colored颜色

删除facet_wrap标签之间的水平线

使用R中的Shapetime裁剪格栅文件

任意列的欧几里得距离

R Sapply函数产生的值似乎与for循环方法略有不同

如何在格子中添加双曲曲线

如何得到R中唯一的组合群?

提取具有连续零值的行,如果它们前面有R中的有效值

一小时满足条件的日期的 Select

如何指定我的函数应该查找哪个引用表?

如何在PackageStatus()中列出&q;不可用的包&q;?

正则表达式在第二个管道和第二个T之后拆分R中的列

如何将这个小列表转换为数据帧?

R中时间间隔的大向量与参考时间间隔的相交

如何预测原始数据集并将值添加到原始数据集中

R中的Desolve:返回的导数数错误

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?

当y为负值时,无法使stat_cor正确定位到底部?

以列名的字符向量作为参数按行应用自定义函数