でGSUBを持つオペレータはのは、私は以下の文字列を持っているとしましょう:perl正規表現と|を使用して文字を大文字に変換する方法R
x = c("123 w. main ave., city, st", "mr. smith", "456 main st.")
は私が大文字にする必要があります知っている文字列の特定の部分を活用できるようにしたいです。私は次のようなアプローチでgsub
とperl
を使用してこれを達成できると思っていた:
gsub("(m)(rs?\\.)|(a)(ve\\.[\\s,])|(s)(t\\.[\\s,$])", "\\U\\1\\L\\2", x, perl=T)
はしかし、これは以下のような結果になります。最初の文字列で
# [1] "123 w. main city, st" "Mr. smith" "456 main"
、それがためにマッチしたテキストを削除しましたその文字列でマッチした正規表現グループは\\3
と\\4
でした。 2番目の文字列では、グループ\\1
と\\2
と一致しているため、意図したとおりに動作します。 3番目の文字列では、同じ理由で最初の文字列と同じことをしました。
私の望ましい結果は、次のようになります:
# [1] "123 w. main Ave., city, st", "Mr. smith", "456 main St."
私の質問、そして、あなたはそれが見つかったグループと置き換えるために正規表現を教えてくださいどのようにでしょうか?インスタンスごとに異なる正規表現を実行する必要がありますか?
'$'は文字列の末尾になっていますか? –
@WiktorStribiżewしかし、 '[]'は文字に特別な影響を与えないので、実際にはドル記号になることを認識しています... – brittenb