将字符串替换为空字符串(使用R的特定单词除外)

将字符串替换为空字符串(使用R的特定单词除外),r,gsub,R,Gsub,您好,我想使用gsub所有字符串,但不包括个人/企业,然后在名为BUSINESS\u type的新列中进行变异。我试过很多方法,但都失败了。提前谢谢 text <- c("|Name:James Indiana|type:INDIVIDUAL|Id::G123456789&M|Location:Indonesia|", "|Name:James Bond|type:BUSINESS|Id::G&987654321M|Location:Indon

您好,我想使用gsub所有字符串,但不包括个人/企业,然后在名为BUSINESS\u type的新列中进行变异。我试过很多方法,但都失败了。提前谢谢

text <- c("|Name:James Indiana|type:INDIVIDUAL|Id::G123456789&M|Location:Indonesia|", "|Name:James Bond|type:BUSINESS|Id::G&987654321M|Location:Indonesia|")
我正在使用

mutatebusiness_type=gsub[^\\bINDIVIDUAL\\b\\b业务\\b]+,x 此方法删除其他字符串,但从其他字符串中排除一些大写字母

变异业务类型=gsub^/?!个人$?!商业$[a-z0-9A-Z:&|]+=$,x 也没有。我也尝试^/?!ignoreme[a-z0-9]+$regex但它不起作用。

您可以使用stru-extract来提取您感兴趣的单词

stringr::str_extract(text, 'INDIVIDUAL|BUSINESS')
#[1] "INDIVIDUAL" "BUSINESS" 
在R底

regmatches(text, regexpr('INDIVIDUAL|BUSINESS', text))
您可以使用str_extract来提取您感兴趣的单词

stringr::str_extract(text, 'INDIVIDUAL|BUSINESS')
#[1] "INDIVIDUAL" "BUSINESS" 
在R底

regmatches(text, regexpr('INDIVIDUAL|BUSINESS', text))
你可以用

mutatebusiness_type=gsub\\b?:个人|业务\\b*跳过*F | s.,x,perl=TRUE 看

正则表达式详细信息:

\b?:个人|企业\b-将个人或企业作为一个整体进行匹配 *跳过*F-跳过匹配并从失败位置继续匹配 |-或 ?s.-匹配任何字符,包括换行符?s是一个使。匹配PCRE正则表达式中的任何字符。 你可以用

mutatebusiness_type=gsub\\b?:个人|业务\\b*跳过*F | s.,x,perl=TRUE 看

正则表达式详细信息:

\b?:个人|企业\b-将个人或企业作为一个整体进行匹配 *跳过*F-跳过匹配并从失败位置继续匹配 |-或 ?s.-匹配任何字符,包括换行符?s是一个使。匹配PCRE正则表达式中的任何字符。
我试过很多方法,但都失败了你失败了什么?请显示最后一次尝试并解释错误,以查看您遇到的问题。mutatebusiness_type=gsub[^\\bINDIVIDUAL\\b\\bBUSINESS\\b]+,x。此方法删除其他字符串,但从其他字符串中排除一些大写字母。变异业务类型=gsub^/?!个人$?!商业$[a-z0-9A-Z:&|]+=$,x。我也尝试^/?!ignoreme[a-z0-9]+$方法但不起作用我尝试过很多方法但都失败了你失败了什么?请显示最后一次尝试并解释错误,以查看您遇到的问题。mutatebusiness_type=gsub[^\\bINDIVIDUAL\\b\\bBUSINESS\\b]+,x。此方法删除其他字符串,但从其他字符串中排除一些大写字母。变异业务类型=gsub^/?!个人$?!商业$[a-z0-9A-Z:&|]+=$,x。我也尝试^/?!忽略名称[a-z0-9]+$方法,但不工作,请参阅帮助。你是最好的巫师。我注意到R中的正则表达式与全局表达式有点不同。@Afiq不确定全局表达式是什么意思,没有默认的正则表达式。有人认为是PCRE,有人认为是POSIX,但这不是真的。正则表达式库都是不同的,您不能期望\w将匹配相同的东西,即使在基本R gsub中perl=TRUE,因此,PCRE正则表达式库和stringr str_replace_都由ICU正则表达式库提供支持。在这里,我使用的是PCRE正则表达式库,它有非常方便的*SKIP*F动词,可以帮助匹配和跳过某些模式,同时匹配其他模式。我理解。你真的让我对Regex有了深刻的了解。谢谢你的帮助。你是最好的巫师。我注意到R中的正则表达式与全局表达式有点不同。@Afiq不确定全局表达式是什么意思,没有默认的正则表达式。有人认为是PCRE,有人认为是POSIX,但这不是真的。正则表达式库都是不同的,您不能期望\w将匹配相同的东西,即使在基本R gsub中perl=TRUE,因此,PCRE正则表达式库和stringr str_replace_都由ICU正则表达式库提供支持。在这里,我使用的是PCRE正则表达式库,它有非常方便的*SKIP*F动词,可以帮助匹配和跳过某些模式,同时匹配其他模式。我理解。你真的让我对Regex有了深刻的了解。谢谢你对Ronak的帮助。这种方法可以提取所需的输出,但当我稍后尝试变异时会有点问题。我不知道这到底是个什么问题。mutatebusiness_type=stringr::str_extracttext,“个人|业务”应该也能起到类似的作用。哦,对不起,我的错。起初,我错误地将字符串和模式放在stru提取的错误位置,与gsub方法相混淆。我没有意识到str_extract也能得到我想要的输出。谢谢Ronak的帮助。这种方法可以提取所需的输出,但当我稍后尝试变异时会有点问题。我不知道这到底是个什么问题。mutatebusiness_type=stringr::str_extracttext,“个人|业务”应该也能起到类似的作用。哦,对不起,我的错。起初,我错误地将字符串和模式放在stru提取的错误位置,与gsub方法相混淆。我没有意识到str_extract也能得到我想要的输出。