regex - 从 R 中的文本中提取模式

标签 regex r

我的数据是这样的:

t <- "The data is like hi hi hi hi  and hi hi end"

我的正则表达式是:
grammer <- "[[:space:]]*(hi)+[[:space:]]"

执行以下两行后:
res <- gregexpr(grammer, t)
regmatches(t, res)

我得到了输出:
 [[1]]
 [1] " hi " "hi "  "hi "  "hi "  " hi " "hi " 

但是,我想要类似的东西:" hi hi hi hi "" hi hi "

最佳答案

你可以这样做,

> t<-"The data is like hi hi hi hi  and hi hi end"
> grammer<-"[[:space:]]*(hi[[:space:]])+[[:space:]]*"
> res<-gregexpr(grammer, t)
> regmatches(t, res)
[[1]]
[1] " hi hi hi hi  " " hi hi "  

或者
> grammer<-"[[:space:]]*(hi[[:space:]])+"
> res<-gregexpr(grammer, t)
> regmatches(t, res)
[[1]]
[1] " hi hi hi hi " " hi hi " 

或者
> t <- "The data is like hi hi hi hi and hi hi end hi"
> grammer<-"[[:space:]]*(hi\\>[[:space:]]?)+"
> res<-gregexpr(grammer, t)
> regmatches(t, res)
[[1]]
[1] " hi hi hi hi " " hi hi "       " hi"

没有前导或后继空格。
> t <- "The data is like hi hi hi hi and hi hi end hi"
> grammer<-"hi\\>([[:space:]]hi)*"
> res<-gregexpr(grammer, t)
> regmatches(t, res)
[[1]]
[1] "hi hi hi hi" "hi hi"       "hi"

说明:
  • [[:space:]]*匹配空格字符零次或多次。
  • (hi[[:space:]])+匹配字符串 hi和以下空格一次或多次。
  • 关于regex - 从 R 中的文本中提取模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26379078/

    相关文章:

    r - 从向量中提取字符元素

    r - 如何提取特定字符串后跟任意数字?

    r - 仅对数据表中的特定行应用 frollapply

    r - 使用 2 个输入/输出加速迭代函数

    r - R 中的 min() 返回 NA 而不是 Inf

    返回 Javascript 正则表达式非捕获组

    javascript - 正则表达式匹配模式并限制字符数

    Javascript .replace() 替换所有出现的/

    r - 在带有面的箱线图中绘制替代矩形(R,ggplot2)

    regex - 将 powershell 正则表达式捕获到表中