首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在匹配其他字符串的同时否定字符串

在匹配其他字符串的同时否定字符串
EN

Stack Overflow用户
提问于 2017-07-26 15:53:38
回答 1查看 58关注 0票数 1

在下面的示例中,我希望使用regex匹配一些字符串,同时在R中否定其他字符串,我希望排除否则我想要匹配的字符串的子节。下面的示例使用来自Regular expression to match a line that doesn't contain a word?的答案。

我的困惑是,当我尝试这样做时,grepl会抛出一个错误:

grepl中的错误(mypattern,mystring):无效的正则表达式‘boardgames x(^((?!games).)*$’,原因是‘无效的regexp’

代码语言:javascript
运行
复制
mypattern <- "boardgames|(^((?!games).)*$)"
mystring <- c("boardgames", "boardgames", "games")

grepl(mypattern, mystring)

注使用str_detect运行将返回所需的结果(即T、T、F),但我希望使用grepl。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 15:55:02

我们需要perl = TRUE,因为默认选项是perl = FALSE

代码语言:javascript
运行
复制
grepl(mypattern, mystring, perl = TRUE)
#[1]  TRUE  TRUE FALSE

这是在使用Perl-compatible regexps时需要的

根据?regexp

perl = TRUE参数用于grep、regexpr、gregexpr、sub、gsub和str拆分,切换到PCRE库,该库使用与Perl 5.x相同的语法和语义实现正则表达式模式匹配,但有一些不同之处。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45331912

复制
相关文章

相似问题

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