phi*_*ndo 1 regex string r gsub
我正试图规范化一堆地址.是否有一个不同的正则表达式,其行为类似于\\b\\b使用gsub()但可以替换多个单词?
address <- c("SE Kellogg", "SE Kellogg Court")
gsub("\\bSE Kellogg\\b", "SE Kellogg Court", address)
#desired output:
"SE Kellogg Court" "SE Kellogg Court"
# actual output
"SE Kellogg Court" "SE Kellogg Court Court"
Run Code Online (Sandbox Code Playgroud)
您可以使用具有负前瞻的PCRE正则表达式:
\bSE Kellogg\b(?!\s+Court\b)
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示.
细节
\\b - 一个单词边界SE Kellogg - 一个文字子串\\b - 一个单词边界(?!\\s+Court\\b) - 如果在当前位置的右边,有一个失败的前瞻使得比赛失败
\\s+ - 一个或多个空格字符Court\\b- 一句话Court.R演示:
> gsub("\\bSE Kellogg\\b(?!\\s+Court\\b)", "SE Kellogg Court", address, perl=TRUE)
[1] "SE Kellogg Court" "SE Kellogg Court"
Run Code Online (Sandbox Code Playgroud)
请注意,如果(...)在搜索词周围使用捕获组()并\1在替换模式中使用反向引用,则可以缩短替换时间:
gsub("\\b(SE Kellogg)\\b(?!\\s+Court\\b)", "\\1 Court", address, perl=TRUE)
^ ^ ^^^
Run Code Online (Sandbox Code Playgroud)