我试图创建一个可以找到" $ ^ $"最后(或字符串的开头)。
这是我的代码
library(stringr)
literalstring <- c("$$^dfgerg$^$", "$^$sgsgr", "gheugberhu$^$fgdbrbe")
在这里,我创建一个随机字符串来测试我的代码
str_view_all( literalstring, "($^$)$" , match=TRUE)
str_view_all( literalstring, "^($^$)" , match=TRUE)`
这里的$ after($ ^ $)是指定我可以找到字符串末尾的$ ^ $。反过来适用于&#34; ^($ ^ $)&#34;
这些都没有回报我正在寻找的东西。
答案 0 :(得分:3)
看看
?regex
...查找元字符的完整列表。 (显然,&#34; ^&#34;和&#34; $&#34;将在该向量中,因为它们表示字符串的空白开头和结尾。元字符都需要被转义(之前是在R模式中的字符类之外使用两个反斜杠。(因为&#34; ^&#34;在字符类中也有特殊规则,我不使用& #34; [$] [^] [$]&#34;。)所以试试这个:
str_view_all(literalstring, "(\\$\\^\\$$)$|^(\\$\\^\\$)" , match=TRUE)
竖杆或&#34;管道&#34;是正则表达式(和R)OR运算符。但我误解了你的要求,答案是:
end_loc <- str_view_all(literalstring, "\\$\\^\\$$" , match=TRUE)
beg_loc <- str_view_all(literalstring, "^\\$\\^\\$" , match=TRUE)
答案 1 :(得分:0)
rex
包对指定regex
非常有用。特别是,它会自动逃脱特价。
library(stringr)
library(rex)
rex("$^$")
#> \$\^\$
literalstring <- c("$$^dfgerg$^$", "$^$sgsgr", "gheugberhu$^$fgdbrbe")
str_view_all(literalstring, rex(("$^$" %if_prev_is% start) %or% ("$^$" %if_next_is% end)))
显示匹配
此处匹配regex
(与其他答案相匹配,直至看起来)是
(?:(?:(?<=^)\$\^\$)|(?:\$\^\$(?=$)))
但rex
说明如下:
$^$
如果它在开始后直接跟随,$^$
如果直接跟在最后。