首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不包括模式前的一组单词。

不包括模式前的一组单词。
EN

Stack Overflow用户
提问于 2022-04-08 16:20:36
回答 3查看 57关注 0票数 2

我想抓住所有提到的“养老金”(资本不敏感,包括养老金,养老金领取者,但排除不相关的词,如“停职”。然而,我想把养老金排除在“工作部”之前,但我无法抓住整个说法。到目前为止,我已经:

代码语言:javascript
复制
sentences <- c("department of work and pensions", "and pensioners", "pensioners", "Pensions", "suspension")
try <- grepl("(?<!department of work and )^pension*", ignore.case = T, perl = T, sentences)
try

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2022-04-08 16:26:50

我们可以用

代码语言:javascript
复制
grepl("\\bpension\\S+", sentences, ignore.case = TRUE) & 
      !grepl("department of work .*\\bpension\\S+", sentences, ignore.case = TRUE)
票数 1
EN

Stack Overflow用户

发布于 2022-04-08 17:41:15

代码语言:javascript
复制
grep('(?<!department of work and )\\bpension', sentences, 
        value = TRUE, ignore.case = TRUE, perl = TRUE)

[1] "and pensioners" "pensioners"     "Pensions" 
票数 1
EN

Stack Overflow用户

发布于 2022-04-08 18:27:58

您可以使用单个模式,该模式将说明单词之间的任何空格,并且只在单词边界匹配pension

代码语言:javascript
复制
sentences <- c("department of work and pensions", "and pensioners", "pensioners", "Pensions", "suspension")
grepl("\\bdepartment of work and \\w+(*SKIP)(*F)|\\bpension", ignore.case = T, perl = T, sentences)
## => [1] FALSE  TRUE  TRUE  TRUE FALSE

请参阅R演示regex演示

详细信息

  • \bdepartment of work and \w+ -单词边界\bdepartment of work and +空格+一个或多个单词字符
  • (*SKIP)(*F) -省略到目前为止匹配的所有文本,然后从失败位置开始下一次匹配搜索
  • | -或
  • \bpension -单词边界\bpension子字符串。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71800310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档