首页 > 解决方案 > R函数检查字符串中的多个文本

问题描述

我在寻找 R 中的解决方案时遇到了问题

我必须找出具有 4 个文本的字符串:

1. " { M/s ",
2. " { M/s. ",
3. " ( S/O - ",
4. " ( W/O - "

并将输出放入R中的if语句中

dd<- data.frame(narr=c("Ratnakar:LIMITED::::CNAAJPIOP0::::Ratnakar:LIMITED",
                       "BAR-BOKALAWA:::Kl RAM I:: { M/s. REJOICE CONFECTIONARS ::BARBOKALAWA:::Kl RAM I",
                       "P2A:::REFUND::: { M/s AANCHAL SAREES :::1(NETPREM KUMAR SINGH)",
                       "P2A:: SUNDER ( S/O - JITENDER PAL ::REFUND:::::rajdhani:lawn",
                       "SAA::PRUD:::P2A::::SAA::PRUD",
                       "SAA-NOON:MOO: RAJNI ( W/O - RAM NIVAS::P2A::REFUND::SAA:NOON:MOO",
                       "CMS.CAR:::SAA:::CMS::CAR"))

This is running fine : str_detect(dd$narr, " M/s | M/s.| W/O | C/O | S/O ")


But, This is not running : str_detect(dd$narr, " { M/s | { M/s.| ( W/O | ( C/O | ( S/O ")

错误即将到来: stri_detect_regex(string, pattern, negate = negate, opts_regex = opts(pattern)) 中的错误:{min,max} 间隔中的错误。(U_REGEX_BAD_INTERVAL) 请帮帮我。

标签: rstringsearch

解决方案


?regexp说:任何具有特殊含义的元字符都可以通过在其前面加上反斜杠来引用。

stringr::str_detect(dd$narr, " \\{ M/s | \\{ M/s\\.| \\( W/O | \\( C/O | \\( S/O ")
#[1] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE

推荐阅读