R / Regex:删除图案前面的直接字符以及图案

时间:2018-04-02 18:56:17

标签: r regex

我有这个字符串:

cd/etc/init[BKSP][BKSP]it.d[ENTER]

我希望最终结果如下:

cd/etc/init.d[ENTER]

它将删除所有[BKSP]子字符串以及前面的直接字符。

我有这个子功能:

sub(“(.?\\[BKSP\\]+)+”, “”, string, perl = TRUE) 

但是得到:cd/etc/iniit.d[ENTER]而不是。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<p>
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
  in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
</p>
<button id="Add">add text</button>
<br/>

<input type="text" id="first_text"> <button id="resetInput">reset</button>


<br>
<canvas id="cv"></canvas>
<img id="bg" src="https://cloud.githubusercontent.com/assets/398893/15136779/4e765036-1639-11e6-9201-67e728e86f39.jpg" style="opacity:0;" />

请参阅regex demo

<强>详情

  • gsub("(?s).(?R)?\\[BKSP]", "", string, perl=TRUE) - 打开DOTALL修饰符
  • (?s) - 匹配任何字符
  • . - 匹配整个模式的1或0次(递归整个模式)
  • (?R)? - 文字子串\\[BKSP]

R demo

[BKSP]

答案 1 :(得分:0)

您可以使用

test <- "cd/etc/init[BKSP][BKSP]it.d[ENTER]"
pattern <- "\\[BKSP\\]\\w*"
gsub(pattern, "", test)

哪个收益

[1] "cd/etc/init.d[ENTER]"