假設我有一個具有以下特點GSUB功能r中刪除斜槓
"\"------------080209060700030309080805\""
現在我想用GSUB功能r中刪除「\和\」部分的字符串,只有請保留以下字符:
"------------080209060700030309080805\"
任何人都可以幫助我弄清楚該如何正確使用它?
假設我有一個具有以下特點GSUB功能r中刪除斜槓
"\"------------080209060700030309080805\""
現在我想用GSUB功能r中刪除「\和\」部分的字符串,只有請保留以下字符:
"------------080209060700030309080805\"
任何人都可以幫助我弄清楚該如何正確使用它?
string <- "\\------------080209060700030309080805\\"
string <- gsub("^\\\\(.*)\\\\$", "\\1", string)
注:我使用的模式是^\(.*)\$
,這將在開始和結束反斜槓之間匹配的一切。這隻會匹配字符串,因此它們都以反斜槓開始和結束。此外,我們使用四個反斜槓(\\\\
)來表示gsub()
中的模式的文字反斜槓。我們需要逃避兩次,一次是R,另一次是正則表達式引擎。
編輯1:固定的臭蟲(創建一個字符串反斜槓需要兩個反斜槓):
s <- '\\"------------080209060700030309080805\\"'
s
gsub('\\"', "", s, fixed = TRUE)
結果
> s <- '\\"------------080209060700030309080805\\"'
> s
[1] "\\\"------------080209060700030309080805\\\""
> gsub('\\"', "", s, fixed = TRUE)
[1] "------------080209060700030309080805"
請注意R單反斜線是轉義碼不是字符串的一部分:
> charToRaw('\\"')
[1] 5c 22
> charToRaw('\"')
[1] 22
因此,您必須在引用的字符串中使用兩個反斜槓來在內部創建一個反斜槓。如果打印這個字符串反斜槓再次逃脫它看起來令人困惑:
> print('\\"')
[1] "\\\""
如果你要打印字符串的轉義內容中使用的cat
代替print
:
> cat('\\"')
\"
對於較多見的幫助R:?"'"
:
字符常量
單引號和雙引號分隔字符常量。它們可以互換使用 ,但首選雙引號(而字符 常用雙引號打印),因此單引號爲 通常只用於分隔包含雙引號的字符常量。
反斜槓用於在字符 常量內啓動轉義序列。轉義不在下表中的字符是 錯誤。
單引號需要用單引號 字符串中的反斜槓和雙引號字符串中的雙引號進行轉義。
\ n換行\ r回車\ t製表\ b退格\一個警報(鐘形) \ f換\ v垂直製表\反斜槓\ \ 'ASCII撇號' \ 「ASCII引號」`ASCII嚴重口音(反向)`\ nnn
給定八進制代碼(1,2或3位數)的字符\ xnn字符 給定十六進制代碼(1或2個十六進制數字)\ unnnn Unicode字符 給定代碼(1--4十六進制數字)\ Unnnnnnnn Unicode字符給出 代碼(1--8個十六進制數字)
' 「------------ 080209060700030309080805 \」'作爲結果看起來像一個錯字:做ÿ你真的希望最終的反斜槓成爲你結果的一部分嗎?請編輯您的答案... –
請以純文本向我們顯示輸入和輸出應該是什麼。不要擔心在R中的轉義 –
這裏的輸入看起來是這樣的: 「\」------------ 080209060700030309080805 \「」,這實際上是來自垃圾郵件/來自數據科學書籍的火腿數據。我想使用gsub函數只抓住「------------ 080209060700030309080805」「部分,這意味着我想擺脫這裏的斜線,但目前看來我沒有一個很好的方法來做到這一點。 – tql66