Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在字符串中查找$的位置_Regex_String_R - Fatal编程技术网

Regex 在字符串中查找$的位置

Regex 在字符串中查找$的位置,regex,string,r,Regex,String,R,根据此处的建议,我尝试了以下方法: > gregexpr(pattern ='$',"data.frame.name$variable.name") [[1]] [1] 30 attr(,"match.length") [1] 0 attr(,"useBytes") [1] TRUE 但它不起作用;注: > nchar("data.frame.name$variable.name") [1] 29 如何在此字符串中找到$的位置 这里有一个使用strsplit和的解决方案 >

根据此处的建议,我尝试了以下方法:

> gregexpr(pattern ='$',"data.frame.name$variable.name")
[[1]]
[1] 30
attr(,"match.length")
[1] 0
attr(,"useBytes")
[1] TRUE
但它不起作用;注:

> nchar("data.frame.name$variable.name")
[1] 29

如何在此字符串中找到
$
的位置

这里有一个使用
strsplit
的解决方案

> which(strsplit("data.frame.name$variable.name", "")[[1]]=="$")
[1] 16

问题是,
$
是正则表达式中的字符串结束标记。请尝试以下方法:

> gregexpr(pattern ='\\$',"data.frame.name$variable.name")
[[1]]
[1] 16
attr(,"match.length")
[1] 1
attr(,"useBytes")
[1] TRUE

。。。这给出了正确的答案-即
16

谢谢!现在说得通了,谢谢!这是一个非常简单、聪明的解决方案。顺便说一句,您应该将此作为另一个线程的答案添加;这比现有的答案更简单。FWIW,我给了Simon b/c检查,他也解释了为什么我的代码不起作用,但我会使用这个解决方案,因为它更简单。虽然Jilber的解决方案是一个不错的替代方案,但我会选择Simon的方法。考虑到读者对R有一定的经验,使用
gregexpr
的代码更容易理解,而且效率也更高。我假设
gregexpr
只是迭代字符串,而
strsplit
将整个字符串拆分为单个字符,然后存储结果。虽然这里的性能可能不是问题,但我仍然认为<代码> GRGEXPRP<代码>是更好的方法。