我在R
中构建了一个脚本,该脚本会自动创建一个非常长且复杂的SQL查询,以在5个数据库的相似表上创建视图。
当然有集成问题要解决。使这种情况发生的唯一剩下的就是我现在要向您介绍的问题。
考虑一个很长的字符串,例如
'"/*NOTES*/", "/*TABLE_ID*/", "/*TABLE_SUB_ID*/", "/*TABLE_SUB_SUB_ID*/", "OTHER_COLUMNS",'
我的目标是替换
'"/*'
与该字符串'/*'
'*/",'
与该字符串'*/'
我尝试过:
gsub('"/*', '/*', '"/*NOTES*/", "/*TABLE_ID*/", "/*TABLE_SUB_ID*/", "/*TABLE_SUB_SUB_ID*/", "OTHER_COLUMNS",')
但它返回字符串
'/**NOTES*//*, /**TABLE_ID*//*, /**TABLE_SUB_ID*//*, /**TABLE_SUB_SUB_ID*//*, /*OTHER_COLUMNS/*,'
我的预期输出是以下字符串:
'/*NOTES*/ /*TABLE_ID*/ /*TABLE_SUB_ID*/ /*TABLE_SUB_SUB_ID*/ "OTHER_COLUMNS",'
/*
)和结束(*/
)答案 0 :(得分:2)
转义正则表达式需要两个反斜杠,因此以下内容将为您提供所需的东西:
gsub('"?(/\\*|\\*/)"?', '\\1', '"/*NOTES*/", "/*TABLE_ID*/", "/*TABLE_SUB_ID*/", "/*TABLE_SUB_SUB_ID*/", "OTHER_COLUMNS",')
# [1] "/*NOTES*/, /*TABLE_ID*/, /*TABLE_SUB_ID*/, /*TABLE_SUB_SUB_ID*/, \"OTHER_COLUMNS\","
仅供参考,大多数情况下都需要双反斜杠,但以下是合法的单反斜杠特殊字符:
'\a\b\f\n\r\t\v'
# [1] "\a\b\f\n\r\t\v"
'\u0101' # unicode, numbers are variable
# [1] "a"
'\x0A' # hex, hex-numbers are variable
# [1] "\n"
也许还有更多,尽管我确定它在某处,但我找不到权威列表。