【发布时间】:2015-10-19 00:42:13
【问题描述】:
我正在尝试提取与字符串中的模式匹配的字符串。说得通:
x <- "this.is.fairly//Whatit.is/path/IDbeginUntilhere7/seenit"
正则表达式的目标是返回:IDbeginUntilhere。我试过这个:
str <- regmatches(x, gregexpr("^I.*7$", x))
我知道它不起作用,因为I 位于字符串的中间。这个问题可能太简单了,但如果我能得到任何帮助,我将不胜感激。
【问题讨论】:
-
省略 ^ 和 $。这些指定模式从字符串的开头开始并在字符串的结尾结束。
-
谢谢。那么问题就很简单了!
-
最好是非贪婪的
str <- regmatches(x, gregexpr("^I.*?7$", x))或str <- regmatches(x, gregexpr("^I[^I]*7$", x)) -
我会使用
stringr包,因为它更简洁,更易于阅读:str_extract(x, "I.*?7")。 -
谢谢大家,您能否发布建议以关闭问题。 @ Mariano:我纠正了问题中的一个错字。模式是
IDbeginUntilhere,我认为条件以I开头并以7结尾就足够了。我们还可以要求字符串位于/之间。