R - 测试 string1 的第一次出现是不是后跟 string2

Posted

技术标签:

【中文标题】R - 测试 string1 的第一次出现是不是后跟 string2【英文标题】:R - test if first occurrence of string1 is followed by string2R - 测试 string1 的第一次出现是否后跟 string2 【发布时间】:2013-12-02 10:36:33 【问题描述】:

我有一个 R 字符串,格式为

s = `"[some letters and numbers]_[a number]_[more numbers, letters, punctuation, etc, anything]"`

我只是想要一种方法来检查s 是否在第一个位置包含"_2"。换句话说,在第一个_ 符号之后,单个数字是“2”吗?我如何在 R 中做到这一点?

我假设我需要一些复杂的正则表达式?

例子:

39820432_2_349802j_32hfh = TRUE

43lda821_9_428fj_2f = FALSE(注意那里有一个_2,但不是在正确的位置)

【问题讨论】:

【参考方案1】:

我认为值得在这里回答通用问题“R - 测试字符串是否包含字符串”。

为此,请使用 grep 函数。

# example:
> if(length(grep("ab","aacd"))>0) print("found") else print("Not found")
[1] "Not found"
> if(length(grep("ab","abcd"))>0) print("found") else print("Not found")
[1] "found"

【讨论】:

更优雅:if(grepl("ab", "aacabd")) print("found") else print("not found") ifelse(grepl("ab", "aacabd"), "found", "not found") 或者做任何进一步使用的输出:ifelse(grepl("ab", "aacabd"), TRUE, FALSE) or ifelse(grepl("ab", "aacabd"), 1, 0)【参考方案2】:
> grepl("^[^_]+_1",s)
[1] FALSE
> grepl("^[^_]+_2",s)
[1] TRUE

基本上,除了__2 之外,查找开头的所有内容。

+1 到 @Ananda_Mahto 建议 grepl 而不是 grep

【讨论】:

有没有通用的解决方案?当我不知道我提前搜索的字符串并允许它在其中包含正则表达式字符时工作的一种? NVM,我发现它使用fixed=TRUE 选项和grepl,你的答案很好,OP 的标题具有误导性。

以上是关于R - 测试 string1 的第一次出现是不是后跟 string2的主要内容,如果未能解决你的问题,请参考以下文章

python xx=re.compile(r'“abc“,string1)里面r的作用是啥?

替换 R 中第一次出现的“:”但不是第二次

QTP基本方法2------截取字符串

按键精灵找多图并点击

java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)

一次CPU占用1600%问题的定位过程 与 反思