【发布时间】:2021-10-10 03:18:36
【问题描述】:
我想出了以下正则表达式,以识别多个字符串的间隙,如果它前面有一个间隙和模式,并确认它在 regexr.com 中工作
模式是:
(?=\s{2,}.\s{2,})\s{2,}
但是当我在 grep() 中的 R 中使用它时,它似乎失败了?甚至包括转义字符符号:
exampleText = "1 Building Apartment City"
gsub("\\(?=\\s{2,}.\\s{2,}\\)\\s{2,}",",",exampleText)
希望得到如下输出:
"1 Building,Apartment,City"
并且正则表达式仅在字符串的任一侧有双倍空格或更大的空格时才匹配。
得到错误“无效的正则表达式”
【问题讨论】:
-
如果我复制/粘贴该代码,我不会收到该错误 - 我只是得到一个空结果。是否取决于
exampleText的值?请确保您的示例 [reproducible ](stackoverflow.com/questions/5963269/…) 具有可用于测试的示例输入和所需输出。 -
猜测您想从前瞻中删除转义并添加参数
perl = TRUE-grep("(?=\\s{2,}.\\s{2,})\\s{2,}","replace text",exampleText, perl = TRUE)。 -
感谢您的反馈,我已经用值更新了问题。希望有助于进一步解释
-
(?=...)是 lookahead,应该遵循其他模式;你的意思是(?<=...)用于lookbehind(以及添加perl=TRUE,正如建议的那样)?