簡體   English   中英

用R中的regexp替換完全匹配的字符串

[英]replace exact string match with regexp in R

我有一個需要清洗的字符串向量。 我已經能夠自己清理很多東西,但是我遇到一件事。

有些字符串的鏈為“ @ 56;”。 開頭(數字有所不同)。 因此,字符串可以是“ @ 56;褲子”或“ @ 897;褲子”,我想像“褲子”一樣保留它。

我寫了以下代碼:

gsub("[@[:digit:];]", "", 'mystring')   

但在以下情況下失敗:

gsub("[@[:digit:];]", "", '@34skirt') # returns 'skirt'

我想在這種情況下返回'@ 34skirt',因為 從最后開始消失了。

我要完全匹配。 有關如何執行此操作的任何想法? 我試着添加\\,但是它不起作用

[@[:digit:];]正則表達式匹配單個字符,該字符可以是@或數字,也可以是; 因此,它將刪除字符串中任意位置的那些字符,與使用gsub找到它們的次數相同。

您可以使用正則表達式定義要刪除的字符序列 ,而不是字符類:

@[0-9]+;

正則表達式演示

您甚至可以告訴正則表達式引擎僅刪除僅在字符串開頭的那些:

^@[0-9]+;

樣本演示

sub("^@[0-9]+;", "", '@34skirt')     ## [1] "@34skirt"
sub("^@[0-9]+;", "", '@34;trousers') ## [1] "trousers"

我們可以試試

sub("@\\d+;", "", v1)
#[1] "mystring" "@34skirt" "trousers" "trousers"

數據

v1 <- c('mystring', '@34skirt',  '@56;trousers', '@897;trousers') 

暫無
暫無

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

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