我在R中使用正则表达式有一个奇怪的请求.我有一些字符串向量,其中一些有多个尾随句点.我想用空格替换这些时期.示例和期望的结果应该清楚我所追求的是什么(也许我需要用我给予的替换参数而不是模式参数来攻击它gsub):
示例和尝试:
x <- c("good", "little.bad", "really.ugly......")
gsub("\\.$", " ", x)
#produces this
#[1] "good" "little.bad" "really.ugly..... "
gsub("\\.+$", " ", x)
#produces this
#[1] "good" "little.bad" "really.ugly "
Run Code Online (Sandbox Code Playgroud)
期望的结果
[1] "good" "little.bad" "really.ugly "
Run Code Online (Sandbox Code Playgroud)
所以原始向量(x)的最后一个字符串最后有6个句点,所以我想要6个空格而不触及真实和丑陋之间的时间段.我知道最后的$表情,但无法超越这个.
Tim*_*ker 16
试试这个:
gsub("\\.(?=\\.*$)", " ", mystring, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
说明:
\. # Match a dot
(?= # only if followed by
\.* # zero or more dots
$ # until the end of the string
) # End of lookahead assertion.
Run Code Online (Sandbox Code Playgroud)