用空格替换尾随句点

Tyl*_*ker 10 regex r

我在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)

  • +1我编辑了你的答案,以显示它如何转换为R. (2认同)