gpt4 book ai didi

R 中的正则表达式 - 以 "OR"方式组合两种模式。无法发现错误。

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

我想在 vec 中找到 pat1pat2

vec <- c("(and) i.e.", "(and) ie", "(and)ie", "and i.e.", "and ie", "and) i.e.")

pat1 <- "\\(and) i\\.e\\."
pat2 <- "\\(and) ie"

我尝试使用 (pat1|pat2)

组合这两种模式
# combine the two patterns 
pat1or2 <- paste0("(", pat1, "|", pat2, ")")
# [1] "(\\(and) i\\.e\\.|\\(and) ie)"

grep(pat1, vec, value=TRUE)
# [1] "(and) i.e."

grep(pat2, vec, value=TRUE)
# [1] "(and) ie"

grep(pat1or2, vec, value=TRUE)
# character(0)

很明显,我遗漏了一些东西,但我无法发现它。
(尝试弄乱 perl 并修复,但事实并非如此)

你能指出我在组合这两种模式时的错误吗?

最佳答案

你忘了反斜杠所有的括号。你的两个模式应该是:

pat1 <- "\\(and\\) i\\.e\\."
pat2 <- "\\(and\\) ie"

在那之后,无论有没有 perl = TRUE,一切都应该没问题。将 perl = TRUE 与您的旧(错误)模式一起使用可能会让您走上正轨以发现错误:

grep(pat1, vec, value=TRUE, perl = TRUE)
# Error in grep(pat1, vec, value = TRUE, perl = TRUE) :
# invalid regular expression '\(and) i\.e\.'

弄清楚你的括号不平衡。

关于R 中的正则表达式 - 以 "OR"方式组合两种模式。无法发现错误。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517223/

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