簡體   English   中英

在r中使用gsub函數刪除斜杠

[英]using gsub function in r to remove slash

假設我有一個包含以下字符的字符串

"\"------------080209060700030309080805\""

現在,我想在r中使用gsub函數刪除“ \\和\\”部分,並且僅保留以下字符:

"------------080209060700030309080805\"

誰能幫我弄清楚我應該如何正確做?

編輯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退格鍵\\ a警報(響鈴)\\ f換頁\\ v垂直制表符\\反斜杠\\ \\'ASCII撇號'\\“ ASCII引號”`ASCII重音符號(反引號)`\\ nn
具有給定八進制代碼(1、2或3位數字)的字符\\ xnn具有給定十六進制代碼(1或2個十六進制數字)的字符\\ unnnn具有給定代碼的Unicode字符(1--4個十六進制數字)\\ Unnnnnnnn具有給定代碼的Unicode字符(( 1--8個十六進制數字)

string <- "\\------------080209060700030309080805\\"
string <- gsub("^\\\\(.*)\\\\$", "\\1", string)

注意:我使用的模式是^\\(.*)\\$ ,它將匹配開始和結束反斜杠之間的所有內容。 因此,這只會匹配以反斜杠開頭和結尾的字符串。 另外,我們使用四個反斜杠( \\\\\\\\ )表示gsub()模式的文字反斜杠。 我們需要轉義兩次,一次針對R,第二次針對正則表達式引擎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM