当底层结构不同时正则表达式r

时间:2016-02-26 10:04:40

标签: regex r

我的输出看起来如下(示例):

 [1] "  360<e8>_ Tank Top Gas Portable Heater"                                           " 180<e8>_ Pir-Incandescent-CFL-LED Occupancy Detector - White"                    
 [3] " 90<e8>_  Angle Bracket - Silver Galvanized"                                       " Professional 90<e8>_  Tube Bender" 

但是,当我检查结构时,我得到以下内容:

str(samp)
 chr [1:26] "  360\xe8_ Tank Top Gas Portable Heater" " 180\xe8_ Pir-Incandescent-CFL-LED Occupancy Detector - White" " 90\xe8_  Angle Bracket - Silver Galvanized" 

我正在尝试用空白替换'_'和其他类似的unicode字符。

我尝试了以下内容:

str_extract(samp, '\\<(.*?)_')

并返回NA。

然而,当我尝试以下内容时:

vec1 <- c('360<e8>_ Tank Top ', 'Professional 90<e8>_  Tube', 'AR30S Retail Optics 36<U+FFFD>_ LED', '45<U+3E38653C>_ Sch.', 'Connectors 341 Tan _x000D_')
str_extract(vec1, '\\<(.*?)_')

我得到以下输出,我想要的是'samp'

[1] "<e8>_"         "<e8>_"         "<U+FFFD>_"     "<U+3E38653C>_" NA      

所以,我只能在创建矢量时进行比较。在这种情况下,当我的样本的底层结构与打印时显示的结构不同时,我如何进行比较?

有关如何处理此问题的任何意见?

1 个答案:

答案 0 :(得分:2)

只需使用gsub。

gsub('<.*?_', '', samp)

gsub('[^[:print:]]*_', '', samp)

[^[:print:]]*有助于匹配不可打印的字符。