我对下面的代码感到困惑,希望有人能给我一些见识,似乎在gsub
中,换行可以与空格匹配在R中。
简而言之,我使用sprintf来准备SQL查询语句,并使代码可读且易于修改,我将该语句分为多行。
使用gsub来代替换行符,但是令我惊讶的是,似乎\\s+
可以匹配换行符和多余的空格。
chr = 1
pos = 1002
ref = 'A'
alt = 'G'
cmd <- sprintf("select * from MyDB
where `chr` ='%s'
and pos = %i
and ref = %s
and alt = %s",
chr, pos, ref, alt)
cmd # where new lines were evident
query <- gsub(pattern='\\n+',replacement=" ", cmd)
query #no new line, extra spaces remaining
query2 <- gsub(pattern='\\s+',replacement=" ", cmd)
query2 #new line and extra spaces all gone
query3 <- gsub(pattern="[[:space:]]+",replacement=" ", cmd)
query3 #same as query2
该代码已在R版本3.5.1中进行测试。希望您可以检查代码并分享您的想法。
答案 0 :(得分:0)
\s
是一个空格字符,而不仅仅是文字空间。参见http://regular-expressions.info/shorthand.html。
R的?regex中记录了[[:space]]
字符类,以指示:“空格字符:制表符,换行符,垂直制表符,换页符,回车符,空格以及其他可能与语言环境相关的字符。” < / p>
仅仅为一个角色组成一个完整的班级就有些奇怪了。您可以在正则表达式中使用文字空间“”。