我对R中的Grep有疑问:如何指定元素以#*
开头(后跟空格)并带有某个字符或数字?
titre_index <- grep('#\*', test)
错误:“ *”是字符串中以“'#*”开头的无法识别的转义符
答案 0 :(得分:2)
您的意思是\\*
。第二个反斜杠转义R字符串中的反斜杠;然后组合的反斜杠会在正则表达式中转义星号。
R首先需要了解字符串:
cat('\\*')
# \*
R理解的字符串然后传递到正则表达式引擎,该引擎需要转义星号以将其与通配符*
区别开。
关于您要匹配的完整模式,我不确定我是否理解:
以#*开头,后跟(无空格)某些字符或数字
但是我认为您需要#*
,然后是字母或数字,在这种情况下,这很适合帐单:
"^#\\*[0-9a-zA-Z]"
也许更清晰易读,因为:
"^#[*][[:alnum:]]"
答案 1 :(得分:2)
为避免弄清楚需要使用多少个反斜线,请使用[*]
来匹配星号。
grep("^#[*]", x, value = TRUE)
另一种根本不使用任何正则表达式的方法是:
x[ substr(x, 1, 2) == "#*" ]
或
x[ startsWith(x, "#*") ]