R RegEx匹配重复捕获组的第n个和第m个元素

s1ag04yj  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(80)

我正在尝试匹配R中字符串中重复捕获组的特定元素。在此示例中,该字符串包含一组3个数字(可选十进制或负数),我可以使用分别进行选择

> gsub(x = "-10.05 20 30.1 some information",
       pattern = "^((-?[0-9]+(?:\\.[0-9]+)?)\\s){1}(.*)$",
       replacement = "\\2")
"-10.05"

通过用{2}{3}替换图案中的{1}部分。
在更一般的情况下:有没有办法同时接收第n个和第m个匹配项?在本例中,可能是{1}{3}?类似于

> gsub(x = "-10.05 20 30.1 some information",
       pattern = "^((-?[0-9]+(?:\\.[0-9]+)?)\\s){3}(.*)$",
       replacement = ...)
"-10.05 30.1"

其中...当然包含规范。

cqoc49vn

cqoc49vn1#

我的问题的充分答案可能可以改编自this已经回答的问题。在我的情况下,它可能是如下所示:

> s <- "-10.05 20 30.1 some information"
> regmatches(s, gregexpr("(-?[0-9]+(?:\\.[0-9]+)?)", s, perl=TRUE))
[[1]]
[1] "-10.05" "20"     "30.1"

相关问题