"21st-August-2017"のような文字列があり、結果がrgsub - 単語の最初の一致のみを置換する
のように21の後に "st"を "xx"に置き換えたい「25xx-August-2017」
私は正規表現の繰り返し数量子を使用してみました。
gsub("st{1}", "xx", "21st-August-2017")
しかし、これは "st"の両方のインスタンスを置き換えます。 "st"の最初のインスタンスと一致するように指定するにはどうすればよいですか?
"21st-August-2017"のような文字列があり、結果がrgsub - 単語の最初の一致のみを置換する
のように21の後に "st"を "xx"に置き換えたい「25xx-August-2017」
私は正規表現の繰り返し数量子を使用してみました。
gsub("st{1}", "xx", "21st-August-2017")
しかし、これは "st"の両方のインスタンスを置き換えます。 "st"の最初のインスタンスと一致するように指定するにはどうすればよいですか?
お試しsub
です。 2つの* sub関数は、subがパターンの最初の出現のみを置き換え、gsubはすべての出現を置き換える点が異なります。
gsub
の代わりにsub
を使用してください。
パターンの最初の出現を
sub
に置き換えるか、すべての出現をgsub
に置き換えます。
s <- c("21st-August-2017")
gsub("(?<=\\d)st", "xx", s, perl = TRUE)
# [1] "21xx-August-2017"
前後参照は数字がst
の前に来ることをあなたのケースでは、特定の位置を確認後読みを使用してください。
a demo on regex101.comを参照してください。
さらに特定の正規表現を指定することもできます。あなたのケースのために
gsub("(\\d1{1,2}st){1}", "xx", "21st-August-2017")
はあなたにもstringrパッケージに見える文字列操作の多くを行う必要がある場合
(一つまたは二つの数字が先行"st"
のすべての出現を置き換える)働くことになります
stringi::stri_replace_first_regex("21st-August-2017", "st{1}", "xx")
stringi::stri_replace_first_fixed("21st-August-2017", "st", "xx")
'sub(" st "、" xx "、" 21st-August-2017 "、fixed = TRUE)' –