r - 在单词第二次出现后匹配所有内容
问题描述
我在 R 中有一个字符串,我想在第二次出现单词后使用正则表达式匹配所有内容
例如:在第二次出现后返回所有内容is
"This is a string of example. this is what i should get in return".
预期产出
what i should get in return
我试过类似的东西,([^is]+)(?:is[^is]+){2}$
但它不起作用。
谢谢。
解决方案
您可以使用 PCRE 模式,例如
^(?>.*?\sis\s+){2}\K.*
查看正则表达式演示
细节
^
- 字符串的开始(?>.*?\\sis\\s+){2}
- 一个原子组匹配两次出现:.*
- 除换行符以外的任何 0+ 个字符,尽可能多\s
- 一个空格is
- 一个字is
\s+
- 1+ 空格
\K
- 匹配重置运算符.*
- 线路的其余部分。
R 演示:
x <- "This is a string of example. this is what i should get in return"
regmatches(x, regexpr("^(?>.*?\\sis\\s+){2}\\K.*", x, perl=TRUE))
## => [1] "what i should get in return"
与stringr
:
stringr::str_match(x, "^(?>.*?\\sis\\s+){2}(.*)")[,2]
推荐阅读
- composer-php - 为什么 Composer 在安装后立即卸载东西?
- flutter - 附加一个新的flutter web进程
- smtp - 自己的 SMTP 服务器,设置:从“noreply@mydomain.com”通过 mycustom@smtpserver.com 发送,如 mailjet
- java - HTTP 状态 500 ? 内部服务器错误号格式异常
- etcd - 为什么所有成员都更改IP地址时etcd不支持自动恢复?
- html - CSS:轮播在第二张图片后返回开始
- c# - WPF(错误)FocusVisualStyle 不适用于带有模板的窗口
- android-studio - Android Studio 未使用自定义 VM 选项启动
- sql - 避免用于 spark SQL 查询的笛卡尔连接
- r - 如何纠正数据框中的拼写错误