如何匹配" $ ^ $"在R中使用str_view的字符串中

时间:2016-11-09 22:37:58

标签: r regex stringr

我试图创建一个可以找到" $ ^ $"最后(或字符串的开头)。

这是我的代码

library(stringr)
literalstring <- c("$$^dfgerg$^$", "$^$sgsgr", "gheugberhu$^$fgdbrbe")

在这里,我创建一个随机字符串来测试我的代码

str_view_all( literalstring, "($^$)$" , match=TRUE)
str_view_all( literalstring, "^($^$)" , match=TRUE)`

这里的$ after($ ^ $)是指定我可以找到字符串末尾的$ ^ $。反过来适用于&#34; ^($ ^ $)&#34;

这些都没有回报我正在寻找的东西。

2 个答案:

答案 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)))

显示匹配

enter image description here

此处匹配regex(与其他答案相匹配,直至看起来)是

(?:(?:(?<=^)\$\^\$)|(?:\$\^\$(?=$)))

rex说明如下:

  • $^$如果它在开始后直接跟随,
  • $^$如果直接跟在最后。