匹配R中的特殊字符

时间:2016-04-28 10:11:19

标签: regex r stringr

您好我有以下数据。

shopping_list <- c("apples x4", "bag of flour", "bag of sugar", "milk x2", 
                   "appple+20gfree", 
                   "BELI HG MSWAT ALA +VAT T 100g BAR WR", 
                   "TOOLAIT CASSE+LSST+SSSRE 40g SAC MDC")

在我的第二步中,我删除了shopping_list中的所有空格。

require(stringr)
shopping_list_trim <- str_replace_all(shopping_list, fixed(" "), "")
print(shopping_list_trim)
[1] "applesx4" "bagofflour" "bagofsugar"             
[4] "milkx2" "appple+20gfree" "BELIHGMSWATALA+VATT100gBARWR"
[7] "TOOLAITCASSE+LSST+SSSRE40gSACMDC"

如果我想提取不包含加号的字符串,请使用以下代码。

str_extract(shopping_list_trim, "^[^+]+$")
[1] "applesx4"   "bagofflour" "bagofsugar" "milkx2"  NA  NA NA     

想要帮助提取包含加号的字符串。 我想输出如下。

NA NA NA NA   "appple+20gfree" 
"BELIHGMSWATALA+VATT100gBARWR" "TOOLAITCASSE+LSST+SSSRE40gSACMDC"

有人知道如何仅提取包含加号的字符串吗?

2 个答案:

答案 0 :(得分:1)

这样就可以了解

> str_extract(shopping_list_trim, "^(?=.*\\+)(.+)$")
[1] NA                                
[2] NA                                
[3] NA                                
[4] NA                                
[5] "appple+20gfree"                  
[6] "BELIHGMSWATALA+VATT100gBARWR"    
[7] "TOOLAITCASSE+LSST+SSSRE40gSACMDC"

正则表达式细分

^(?=.*\\+) #Lookahead to check if there is one plus sign
(.+)$ #Capture the string if the above is true

答案 1 :(得分:0)

如果您不想使用环视,请尝试

^.*\+.*$

匹配anything后跟+后跟anything:)

See it work here at regex101

此致