【问题标题】:Detect substring within a string while not considering part of the substring在不考虑子字符串的一部分的情况下检测字符串中的子字符串
【发布时间】:2021-11-11 06:36:00
【问题描述】:

我正在尝试检查字符串 B 是否包含在字符串 A 中,这就是我尝试过的:

library(stringr)
string_a <- "something else free/1a2b a bird yes"
string_b <- "free/xxxx a bird"
str_detect(string_a, string_b)

我希望匹配 (TRUE),因为我不想考虑 string_b 的一部分,后跟“/”和空格,这就是我输入“/xxxx”的原因。

在某种程度上,“/xxxx”应该表示匹配这些地方可能存在的任何字符串或数字。像这样匹配时是否有另一种表示法可以忽略部分字符串?

【问题讨论】:

    标签: r string-matching stringr


    【解决方案1】:

    是的,在正则表达式中,您可以使用 .* 匹配零个或多个字符。

    library(stringr)
    string_a <- "something else free/1a2b a bird yes"
    string_b <- "free/xxxx a bird"
    string_c <- "free/.*a bird"
    
    str_detect(string_a, string_c)
    #[1] TRUE
    

    如果您无法从源代码更改string_b,您可以使用str_replace_allgsubxxxx 替换为'.*'

    str_detect(string_a, str_replace_all(string_b, 'x+', '.*'))
    #[1] TRUE
    

    【讨论】:

    • 您的答案很完整,但是为了增加我对字符串匹配的了解,您是否知道任何好的资源来了解有关此特定主题的更多信息?
    • 我主要是通过堆栈溢出的例子来学习的。你可以参考regular-expressions.info,但我自己没用过。
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多