R:正则表达式可以匹配方括号中的模式

时间:2018-11-27 15:15:01

标签: r regex

我有这个字符串:

“ [DELW] [0x00] [BKSP] [0x00] [0x12] [0xE0] [0xF0] [0xEF] [DOWN] [UP] asdkjaosdkj [ENTER]”

我想删除所有从[0x00],[0xF0]之类的数字开始的键盘标签(在方括号中)。

最终结果将是:“ [DELW] [BKSP] [DOWN] [UP] asdkjaosdkj [ENTER]”

我考虑过使用str_replace,但是很难找到可以正常工作的正则表达式。我真的很感谢所有帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

如果要删除的内容始终为0x和两个十六进制数字,则:

> gsub("\\[0x..\\]","",s)
[1] "[DELW][BKSP][DOWN][UP]asdkjaosdkj[ENTER]"

请注意,停止\所需要的[]是特殊的,而\\则是将真实的反斜杠转换为R字符串。

如果您要插入stringr包,则可以使用相同的模式进行操作:

> stringr::str_replace_all(s, "\\[0x..\\]","")
[1] "[DELW][BKSP][DOWN][UP]asdkjaosdkj[ENTER]"

但是base::gsub使事情变得轻松。

答案 1 :(得分:0)

我认为您可以尝试

\[[^0x]+]
  

说明

\[-完全匹配 [个字符。

[^0x]+-匹配任何一次或多次,除了0x。

]-完全匹配] 字符

enter image description here