【发布时间】:2014-01-30 03:44:21
【问题描述】:
只是需要grepl 的帮助,这让我很头疼!
我有两个变量:
str1<-"AAV.L"
str2<-"AAV2.L"
我想要做的是检查str2 是否是str1 的扩展(在这种情况下就是这样)。基本上这里str2 的名称中有一个额外的"2"..
理想的解决方案是这样的:
grepl(str1,paste0(str2,...))
但我不知道在str1 中解释.。变量的长度也不一样,所以我不能只检查str1 的前三个字符是否存在于str2 中。
有人有什么想法吗?
谢谢!
编辑 - 澄清..
基本上,“扩展”是指如果一个变量包含完全相同的字母,甚至更多,以相同的顺序。所以上面的例子,AAV.L 和AAV2.L 会匹配,因为它包含AAV..L。它不一定是这样的,但它应该匹配 REWR 和 REWRLE 以及 REWR..。
所以c("AAV.LE", "BAAV.L","AABV.L","AAV..L","ABCAV.L"),没有一个匹配。如果我要将匹配规则用简单的英语写成:str2 是否以 str1 开头或 str2 是否以 str1 的任何子集开头并结束与另一个子集?
我查看了agrep,但它的匹配太不准确了。例如AAV.L 和AAV2.L 匹配很好,但是ADD 和APUAD 也匹配,这是不正确的!我知道我可以指定max.distance,但有些字符串可能是ADD 和ADDDDDDDDD,这会使设置这个值不可信..
如果这有帮助,请告诉我。
【问题讨论】:
-
你能更好地说明问题吗?您如何准确定义一个字符串是否是另一个字符串的“扩展”?
-
另外,你必须使用
grepl吗?根据您对我上一条评论的回答,我认为不使用正则表达式可能更容易。 -
-1 并投票结束:您没有提供足够的示例或解释来唯一确定您想要什么。
c("AAV.LE", "BAAV.L","AABV.L","AAV..L","ABCAV.L")中的什么应该匹配?你可能想看看agrep。 -
如果您更准确地编辑您的问题,我将提名重新提出问题。
-
对不起,伙计们,赶时间和假期!我已编辑问题以获得更多说明。
标签: r regex string string-comparison