相关疑难解决方法(0)

查找多个/重叠匹配子串的索引

我有一个字符串s="CCCGTGCC"和一个子字符串ss="CC".我希望得到所有索引,s然后启动字符串ss.在我的例子中,我想要取回数组c(1,2,6).

是否有任何字符串功能可以实现这一目标?请注意,我的字符串是在表单中"CCCGTGCC",而不是c("C","C","C","G","T","G","C","C").

grep 只返回字符串中是否有匹配项,而不是字符串中匹配项的索引,除非我遗漏了某些内容.

grep r character

15
推荐指数
1
解决办法
4556
查看次数

用正则表达式提取ngram

Karl Broman的帖子:https://kbroman.wordpress.com/2015/06/22/randomized-hobbit-2/ 让我玩正则表达式和ngrams只是为了好玩.我试图用正则表达式提取2克.我知道有解析器可以做到这一点,但我对正则表达式逻辑感兴趣(即,这是一个我无法满足的自我挑战).

下面我给出一个最小的例子和所需的输出.我尝试的问题是2折:

  1. 克(单词)被吃掉了,下次通过时无法使用. 如何让它们可用于第二次传递?(例如,我希望在之前已被消费之后like可用)like toastI like

  2. 我无法在未捕获的单词之间创建空格(即使我使用过,也请注意输出中的尾随空格(?:\\s*)). 如何在第n个(在本例中为第二个)单词中捕获尾随空格?我知道这可以简单地完成:"(\\b[A-Za-z']+\\s)(\\b[A-Za-z']+)"对于2克但我想将解决方案扩展到n-gram.PS我知道,\\w但我不认为下划线和数字是单词部分,但请考虑'作为单词部分.

MWE:

library(stringi)

x <- "I like toast and jam."

stringi::stri_extract_all_regex(
    x,
    pattern = "((\\b[A-Za-z']+\\b)(?:\\s*)){2}"
)

## [[1]]
## [1] "I like "    "toast and "
Run Code Online (Sandbox Code Playgroud)

期望的输出:

## [[1]]
## [1] "I like"  "like toast"    "toast and"  "and jam"
Run Code Online (Sandbox Code Playgroud)

regex r stringi

8
推荐指数
1
解决办法
1049
查看次数

R - 传递变量的正向前看

我陷入了正常的表达.我通常使用这行代码来查找字符串中重叠的重复:

gregexpr("(?=ATGGGCT)",text,perl=TRUE)
[[1]]
[1]  16  45  52  75 203 210 266 273 327 364 436 443 480 506 534 570 649
attr(,"match.length")
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
attr(,"useBytes")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

现在我想给gregexpr一个包含在变量中的模式:

x="GGC"
Run Code Online (Sandbox Code Playgroud)

当然,如果我传递变量x,gregexpr将要搜索"x"而不是变量包含的内容

gregexpr("(?=x)",text,perl=TRUE)
[[1]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

gregexpr在这种积极展望的情况下,如何将变量传递给我?

regex variables r

4
推荐指数
1
解决办法
113
查看次数

计算字符串包含子字符串时的出现次数

我有类似的字符串

'abbb'
Run Code Online (Sandbox Code Playgroud)

我需要了解有多少次我能找到子串'bb'.

grep('bb','abbb')
Run Code Online (Sandbox Code Playgroud)

回报1.因此,答案是2(a-bb和ab-bb).我怎样才能按照我需要的方式计算出现次数?

r

4
推荐指数
1
解决办法
1238
查看次数

标签 统计

r ×4

regex ×2

character ×1

grep ×1

stringi ×1

variables ×1