Regex 求R中两个词之间的距离

Regex 求R中两个词之间的距离,regex,r,Regex,R,假设我在文件中有一行: string <- "thanks so much for your help all along. i'll let you know when...." string您将无法仅从正则表达式获取此信息。我建议使用空格作为分隔符进行拆分,然后循环或使用内置函数对两个术语进行数组搜索,并减去索引的差值(数组位置) 编辑:好的,我想了一会儿,也许这将作为正则表达式模式对您有效: \b帮助(\s+[^\s]+){1,5}+\s+know\b 这采用了相同的“空格是分隔符

假设我在文件中有一行:

string <- "thanks so much for your help all along. i'll let you know when...."

string您将无法仅从正则表达式获取此信息。我建议使用空格作为分隔符进行拆分,然后循环或使用内置函数对两个术语进行数组搜索,并减去索引的差值(数组位置)

编辑:好的,我想了一会儿,也许这将作为正则表达式模式对您有效:

\b帮助(\s+[^\s]+){1,5}+\s+know\b


这采用了相同的“空格是分隔符”概念。首先匹配帮助,然后贪婪地搜索最多5个“单词”,然后查找“知道”(因为“知道”将是第6个)

您无法单独从regex获取此信息。我建议使用空格作为分隔符进行拆分,然后循环或使用内置函数对两个术语进行数组搜索,并减去索引的差值(数组位置)

编辑:好的,我想了一会儿,也许这将作为正则表达式模式对您有效:

\b帮助(\s+[^\s]+){1,5}+\s+know\b


这采用了相同的“空格是分隔符”概念。首先匹配帮助,然后贪婪地搜索最多5个“单词”,然后查找“知道”(因为“知道”将是第6个)

这本质上是对蜡笔答案的一个非常粗糙的实现,作为一个基本功能:

withinRange <- function(string, term1, term2, threshold = 6) {
  x <- strsplit(string, " ")[[1]]
  abs(grep(term1, x) - grep(term2, x)) <= threshold
}

withinRange(string, "help", "know")
# [1] TRUE

withinRange(string, "thanks", "know")
# [1] FALSE

withinRange这本质上是蜡笔答案的一个非常粗糙的实现,作为一个基本功能:

withinRange <- function(string, term1, term2, threshold = 6) {
  x <- strsplit(string, " ")[[1]]
  abs(grep(term1, x) - grep(term2, x)) <= threshold
}

withinRange(string, "help", "know")
# [1] TRUE

withinRange(string, "thanks", "know")
# [1] FALSE
withinRange拆分字符串:

> words <- strsplit(string, '\\s')[[1]]
>单词索引名称(索引)abs(索引[“帮助”]-索引[“知道”])<6
错误的
在函数中编辑

 distance <- function(string, term1, term2) {
    words <- strsplit(string, "\\s")[[1]]
    indices <- 1:length(words)
    names(indices) <- words
    abs(indices[term1] - indices[term2])
 }

 distance(string, "help", "know") < 6
distance拆分字符串:

> words <- strsplit(string, '\\s')[[1]]
>单词索引名称(索引)abs(索引[“帮助”]-索引[“知道”])<6
错误的
在函数中编辑

 distance <- function(string, term1, term2) {
    words <- strsplit(string, "\\s")[[1]]
    indices <- 1:length(words)
    names(indices) <- words
    abs(indices[term1] - indices[term2])
 }

 distance(string, "help", "know") < 6

distance怎么办:
withinRange(string,“you”,“know”)
角落的箱子,但海报可能根本不在乎。
你的
应该被计算在内吗+1@TylerRinker,我实际上是在更新你的评论,以强调这只是一个起点:-)谢谢你阿南达。这正是我想要的+1@AnandaMahto我也会写一个例子,但我实际上不知道
R
!关于:
withinRange(字符串“you”,“know”)
角盒,但海报可能根本不在乎。
你的
应该被计算在内吗+1@TylerRinker,我实际上是在更新你的评论,以强调这只是一个起点:-)谢谢你阿南达。这正是我想要的+1@AnandaMahto我也会写一个例子,但我实际上不知道
R
!我试图把你的正则表达式转换成R喜欢的东西,但我不太明白(部分原因是我现在已经很晚了,实际上我应该结束了)。早上我会再看一遍:-)我正试着把你的正则表达式转换成R喜欢的东西,但我不太明白(部分原因是我现在已经很晚了,我实际上应该结束了)。我明天早上再看一遍:-)