【发布时间】:2019-12-08 20:22:01
【问题描述】:
我有一个 ML 算法的字符向量,它的末尾附加了 1 或 2 位数字,我正在尝试匹配(并最终摆脱)。问题是我有一些算法,它们的原始名称中包含数字,我也想保留它们。例如svmLinear2 和C5.0。
示例字符向量:
algs <- c("svmLinear234", "svmLinear25", "C5.05", "C5.053", "gamSpline34", "bagEarth8")
首先,我考虑加入一个否定的后视来逃避算法的字符串,这些算法的原始名称中有数字:
algs %>%
str_view_all("(?<!svmLinear2|C5.0)[:digit:]{1,2}$")
适用于最初名称中没有数字的算法,但似乎不适用于我试图消极寻找的算法。
我尝试了积极的回溯,看看这将如何影响匹配(知道它不适用于 gamSpline34 或 bagEarth8):
algs %>%
str_view_all("(?<=svmLinear2|C5.0)[:digit:]{1,2}$")
这对于那些原始名称中有数字的算法非常有效,但我不知道如何将此正则表达式与从算法中捕获原始名称中没有任何数字的数字结合起来。
我试图以某种方式组合这两个正则表达式,但我不确定如何。我尝试使用 |([:digit:]{1,2}$) 包含辅助表达式或正则表达式,但匹配变得贪婪。
所以想要匹配的是:
【问题讨论】:
-
如果你有一个相对较短的算法 ID 列表,匹配这些会更容易吗?
-
不确定,如果我理解正确,但看看this demo 是否有帮助。
-
给定示例的预期输出是什么?你有 G5W 假设的所有可能算法的列表吗?如果可以,可以分享一下吗?
标签: r regex regex-lookarounds stringr