簡體   English   中英

僅在/何時滿足條件時才替換字符串組件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM