gpt4 book ai didi

regex - 单词负前瞻的意外结果(R 正则表达式)

转载 作者:行者123 更新时间:2023-12-02 01:26:25 27 4
gpt4 key购买 nike

我正在尝试为包含“dog”但不包含“cat”的句子创建规则。我希望该函数返回 FALSE,因为该字符串同时包含“dog”和“cat”。

使用否定:

grepl("cat.*[^dog]", "asdfasdfasdf cat adsfafds dog", perl=T)

使用否定前瞻:

grepl("cat.*(?!dog)", "asdfasdfasdf cat adsfafds dog", perl=T)

使用stringr包中的str_detect函数

require(stringr)
str_detect("asdfasdfasdf cat adsfafds dog", "cat.*(?!dog|$)")

所有这三个方法都返回 true。

最佳答案

您可以使用此正则表达式查找包含猫但不包含狗的字符串:

^((cat((?!dog).)*)|(((?!dog).)*?cat((?!dog).)*)+)$

它基于答案 here .它考虑到狗可以在猫之前或之后出现。


所有解决方案的问题是 cat.* 会找到 cat 然后 .* 会吃掉所有东西,包括 s.

还有,你忘了处理狗先于猫的情况。

正如 Druzion 指出的那样,char 类不是可行的方法。

关于regex - 单词负前瞻的意外结果(R 正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com