一个非常琐碎的问题 - 尝试了几次迭代,仍然无法得到正确的答案。也许“grep”不是正确的命令,或者我的理解完全错误。
我有一个字符串:
"Part 2.2 are Secondary objectives of this study".
我正在尝试对“次要目标”进行完全匹配。我以为我可以在这里使用“fixed=TRUE”,但两者都匹配。
> str5 = "Part 2.2 are Secondary objectives of this study"
> line<-grep("Secondary objectives",str5,fixed=TRUE)
> line
[1] 1
> str5 = "Part 2.2 are Secondary objectives of this study"
> line<-grep("Secondary objective",str5,fixed=TRUE)
> line
[1] 1
我知道“grep”正在做它应该做的事情。它正在搜索技术上在原始字符串中的字符串“次要目标”。但我的理解是我可以使用“fixed=TRUE”命令进行精确匹配。但显然我错了。
如果带有“fixed=TRUE”的“grep”不是完全匹配的正确命令,什么会起作用?“str_match”也不起作用。如果我的模式是:“次要目标”,它应该返回“integer(0)”,但如果我的模式是“次要目标”,它应该返回 1。
非常感谢任何输入。非常感谢!- 西马克
更新:在下面尝试 Arun 的建议 - 工作正常。
str5 = "Part 2.2 are Secondary objectives of this study"
> grep("(Secondary objectives)(?![[:alpha:]])",str5, perl=TRUE)
[1] 1
> grep("(Secondary objective)(?![[:alpha:]])",str5, perl=TRUE)
integer(0)
str5 = "第 2.2 部分是本研究的次要目标" grep("(pat)(?![[:alpha:]])",str5, perl=TRUE) integer(0)
However when I did this:
> str5 = "Part 2.2 are Secondary objectives of this study"
> pat <- "Secondary objectives"
> grep("(pat)(?![[:alpha:]])",str5, perl=TRUE)
integer(0)
Thought I can call "pat" inside "grep". Is that incorrect? Thanks!