[英]Replacing string component only if/when condition is met?
現在,我正在嘗試建立一個條件,以便如果有一個以“ s”結尾的單詞,並且在“ s”之前有4個或更多字符,請在前面加上一個撇號(')改為“ s”。
因此,將“他的計算機的蘋果醬”轉換為“他的計算機的蘋果醬”
知道我該怎么做嗎?
我遇到的問題是,這不起作用(有充分的理由):
library(stringr)
str_replace_all("his computers applesauce", "\\b[a-z]{4,}s\\b", "\\b[a-z]{4,}'s\\b")
#> [1] "his b[a-z]{4,}'sb applesauce"
您需要將單詞捕獲到一個組中(例如第1組),然后在替換時可以使用\\\\1
反向引用它,並相應地進行替換。
只需更改您的字符串,
str_replace_all("his computers applesauce", "\\b[a-z]{4,}s\\b", "\\b[a-z]{4,}'s\\b")
至
str_replace_all("his computers applesauce", "\\b([a-z]{4,})s\\b", "\\1's")
您正在嘗試將匹配項替換為正則表達式本身。
您需要捕獲組。 \\ b([a-zA-Z] {4,})(s)\\ b像這樣
library(stringr)
str_replace_all("his computers applesauce", "\\b([a-z]{4,})(s)\\b", "\\1'\\2")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.