相关疑难解决方法(0)

R:如何让grep返回匹配,而不是整个字符串

grep在R问题中,我有一个非常愚蠢的东西.道歉,因为这看起来应该很容易 - 我显然只是遗漏了一些东西.

我有一个字符串向量,让我们称之为alice.部分alice内容打印在下面:

T.8EFF.SP.OT1.D5.VSVOVA#4   
T.8EFF.SP.OT1.D6.LISOVA#1  
T.8EFF.SP.OT1.D6.LISOVA#2   
T.8EFF.SP.OT1.D6.LISOVA#3  
T.8EFF.SP.OT1.D6.VSVOVA#4    
T.8EFF.SP.OT1.D8.VSVOVA#3  
T.8EFF.SP.OT1.D8.VSVOVA#4   
T.8MEM.SP#1                
T.8MEM.SP#3                      
T.8MEM.SP.OT1.D106.VSVOVA#2 
T.8MEM.SP.OT1.D45.LISOVA#1  
T.8MEM.SP.OT1.D45.LISOVA#3
Run Code Online (Sandbox Code Playgroud)

我想grep给出我在其中一些字符串中出现的D之后的数字,条件是包含"LIS"的字符串和空字符串或其他东西.

我希望grep能够返回捕获组的值,而不是整个字符串.这是我的R风格的正则表达式:

pattern <- (?<=\\.D)([0-9]+)(?=.LIS)
Run Code Online (Sandbox Code Playgroud)

没什么太复杂的.但是为了得到我所追求的东西,而不是仅仅使用grep(pattern, alice, value = TRUE, perl = TRUE)我正在做的事情,这似乎很糟糕:

reg.out <- regexpr(
    "(?<=\\.D)[0-9]+(?=.LIS)",
    alice,
    perl=TRUE
)
substr(alice,reg.out,reg.out + attr(reg.out,"match.length")-1)
Run Code Online (Sandbox Code Playgroud)

现在看它看起来似乎并不太难看,但是为了让这件完全无关紧要的工作变得麻烦,令人尴尬.任何关于如何妥善解决这个问题的指针?

加分指着我解释之间无论我访问的不同网页$,@attr.

grep r

50
推荐指数
2
解决办法
4万
查看次数

标签 统计

grep ×1

r ×1