这可能听起来像一个重复的问题,但我已经花了最后一个小时寻找答案,不能应用其他类似的冠冕堂皇的问题的解决方案,这个问题。
我有一个文本字符串,希望从第二个_
和第一个.
之间提取文本
我所做的最大工作是从第一个_
和.
之间提取文本,如下所示。
library(stringr)
mytext<-"one_two_three.four"
stringr::str_extract(mytext, "(?<=_)(.+)(?=\\.)")
因此,我想要的答案是three
,而不是我的答案给出的two_three
。
我更喜欢使用str_extract函数,有人可以修改我的尝试以获得所需的答案吗?
1条答案
按热度按时间6ioyuze21#
说明:
.*_
=除下划线外的任意数量。.*_
=除下划线之外的任意数量。(.*)
=任何数量的任何东西,这是一个捕获组。\\.
=句号/句号(".").*
=任何数量的任何东西"\\1"
=请返回第一个捕获组的内容。说明:
(?<=_)
=正向向后看,即捕获的组前应有下划线([^_]+)
=一个或多个非下划线字符(?=\\.)
=正向前瞻,即在捕获的组之后应该有一个句号/句号并且从
stringr
1.5.0版开始,您可以指定捕获组,因此我的建议是:说明:
(_.+_)
=组1是下划线,然后是除下划线之外的一个或多个任意值。(.+)
=基团2是一个或多个任意值(\\.)
=第3组为句号/句号group = 2
=请给我第2组说明:
通过删除与
"_|\\."
=下划线或句号/句点匹配的任何内容将其拆分为块,3
=给我第三块。