我使用此正则表达式将字母与单词的数字(和符号)分开:(?<=[a-zA-Z])(?=([[0-9]|[:punct:]]))
。我的测试字符串是:"CALLE15 CRA22"
。
我只想将此正则表达式应用于该句子的第一个单词(该单词用空格定义)。即,我只想将其应用于"CALLE15"
。
一个解决方案是将字符串(句子)分成单词,然后将正则表达式应用于第一个单词,但是我想在一个正则表达式中全部完成。其他解决方案是使用r stringr::str_replace() (or sub())
仅替换第一个匹配项,但出于其他原因,我需要stringr::str_replace_all (or gsub())
。
我需要的是在使用替换功能进行的两者之间插入一个空格。我想要的结果是"CALLE 15 CRA22"
,并具有"CALLE15 CRA 22"
的可能性。我为该位置尝试了很多职位,一无所获,一开始都没有^
。
https://rubular.com/r/7dxsHdOA3avTdX
感谢您的帮助!!!!
答案 0 :(得分:1)
我不确定您的问题陈述(请参阅上面的评论),但是以下内容重现了您的预期输出并使用了str_replace_all
ss <- "CALLE15 CRA22"
library(stringr)
str_replace_all(ss, "^([A-Za-z]+)(\\d+)(\\s.+)$", "\\1 \\2\\3")
#[1] "CALLE 15 CRA22"
要从上面的注释中复制示例字符串的输出
ss <- "CLL.6 N 5-74NORTE"
pat <- c(
"(?<=[A-Za-z])(?![A-Za-z])",
"(?<![A-Za-z])(?=[A-Za-z])",
"(?<=[0-9])(?![0-9])",
"(?<![0-9])(?=[0-9])")
library(stringr)
str_split(ss, sprintf("(%s)", paste(pat, collapse = "|"))) %>%
unlist() %>%
.[nchar(trimws(.)) > 0] %>%
paste(collapse = " ")
#[1] "CLL . 6 N 5 - 74 NORTE"