Regex 如何在r中的字符向量中找到特定字符的位置

Regex 如何在r中的字符向量中找到特定字符的位置,regex,r,Regex,R,我有x=c(“AU | 30 | 3020”、“AU | 15 | 1510”、“AU | 2000 | 510”) 如果我想知道x中每个元素最后一个“|”的位置,我该怎么做。答案应该是68 一个可接受的替代方法是为每个元素找到(比如)第二个“|”的位置(相对于最后一个“|”) 总是有2个|?如果是的话 unlist(lapply(gregexpr("\\|",x),"[[",2)) 否则,您可能需要解决方法。另外,查看stringrpackage您可以使用以下命令获得最后一个的位置(与的总数

我有
x=c(“AU | 30 | 3020”、“AU | 15 | 1510”、“AU | 2000 | 510”)

如果我想知道x中每个元素最后一个“|”的位置,我该怎么做。答案应该是68


一个可接受的替代方法是为每个元素找到(比如)第二个“|”的位置(相对于最后一个“|”)

总是有2个
|
?如果是的话

unlist(lapply(gregexpr("\\|",x),"[[",2))

否则,您可能需要解决方法。另外,查看
stringr
package

您可以使用以下命令获得最后一个
的位置(与
的总数无关):

unlist(gregexpr("\\|[^|]*$", x))
# [1] 6 6 8

也许像
lappy(gregexpr(“|”),x,fixed=T,tail,n=1)这样的东西是有用的?我使用了sapply(gregexpr(“|”),x,fixed=T,tail,n=1),它工作得很好。谢谢