使用R将字符串从循环词提取到第一个空格

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

我正在尝试从字符向量中提取地铁站名称。这些电台名称前面总是以'METRO-'开头。

这是一个例子。

x <- c('BLA BLA BLA METRO-SNOWDON BLA BLI BLU', 'BLA VLA BLU METRO-SQUARE-VICTORIA YES NO')

我想提取METRO之后的字符 - 直到第一个空白区域。

所需的输出应该是这样的

"METRO-SNOWDON", "METRO-SQUARE-VICTORIA"

我无法弄清楚代码中的“空白”部分

sub('.*(METRO-)', '\\1', x)

谢了,兄弟们!

r regex string extract
1个回答
2
投票

只要您的地铁名称中没有包含空格,此模式就可以使用:

gsub(".*?(METRO-.*?)\\s.*", "\\1", x)

.*?意味着匹配任何东西,直到模式的下一部分匹配。

这在第二次出现时尤其重要,因为我们希望在“METRO”之后的第一个空白空间结束捕获组。如果没有?,捕获组将包含所有内容,直到最后的空白实例。

上面的表达式返回:

[1] "METRO-SNOWDON"         "METRO-SQUARE-VICTORIA"
© www.soinside.com 2019 - 2024. All rights reserved.