R提取字符串匹配模式和前空格

66bbxpm5  于 2023-06-27  发布在  其他
关注(0)|答案(2)|浏览(97)

我对R还很陌生,在尝试提取或gsub我想要的字符串部分时,很难理解语法的含义。我的数据如下所示

d <- "Para | YTX-456 | XYZ-123456 | NTX-897"

我想提取“XYZ-123456”,所以这三个特定的字母,“-”和任何数字,遵循但 * 没有 * 的空间。到目前为止,我所尝试的一切都只是用空格提取数字。如何在字符串中找到“XYZ-”的匹配项,并将其与后面的所有数字沿着提取?
谢谢!

qoefvg9y

qoefvg9y1#

您可以在这里使用stringr::str_extract(),其中[0-9]+标识所需的“XYZ-”模式之后的所有数字:

stringr::str_extract(d,"XYZ-[0-9]+")

# [1] "XYZ-123456"
chy5wohz

chy5wohz2#

既然你提到了gsub,这里有一个使用sub的解决方案(在这里是首选的,因为sub是在每个字符串需要一个匹配时使用的-就像你的例子一样):

sub(".*(XYZ\\S+).*", "\\1", d)
[1] "XYZ-123456"

在这里,我们将所讨论的子字符串定义为捕获组,将其 Package 到()中。子字符串本身部分匹配(XYZ),部分匹配\\S+,这是一个负字符类,匹配任何不是的空格字符。

相关问题