MyString = "aabbccawww"という文字列があります。 MyStringの最後の "a"を "A"、つまりと置き換えてgsub式を使用してとしたいと思います。それは "aabbccAwww"です。私はウェブサイトで同様の質問を見つけましたが、彼らはすべて最後の出来事とその後のすべてを置き換えるように要求しました。 私はgsub( "a [^ a] * $"、 "A"、MyString)を試しましたが、 "aabbccA"を返します。私はその目的のためにstringi関数を使用することができることを知っていますが、そのような関数を使用するコードの一部に実装するソリューションが必要です。したがって、正規表現を使用したいと思います。 提案がありますか?正規表現を使用して文字列の最後の出現箇所を置き換えます。
答えて
私たちは「」「A」([^a]*
)ではありません、ゼロ以上の文字に続いて、文字列の末尾($
)までグループ((...)
)としてそれをキャプチャし、それを置き換えると一致するsub
を使用することができます「A」キャプチャグループの後方参照が続く(\\1
)
sub("a([^a]*)$", "A\\1", MyString)
#[1] "aabbccAwww"
あなたは文字列を扱うには非常に簡単になりますstringi
ライブラリを使用することができ、すなわち
library(stringi)
x <- "aabbccawww"
stri_replace_last_fixed(x, 'a', 'A')
#[1] "aabbccAwww"
問題を解決する必要がありますakrunの答えが(わからない、まだ\1
などで働いていない)が、あなたはまた、展望台を使用することができます。
a(?!(.|\n)*a)
は、これは基本的に言っている:任意のが続かないa
を探します文字数はa
です。 (?!x)
は、いわゆるルックアウトであり、これは、検索された表現がマッチに含まれないことを意味する。
.
は改行を除いてすべての文字を意味するので、(.|\n)
が必要です。
ルックアウトやその他の正規表現については、http://regexr.com/をお勧めします。
私は試しました:gsub( "a(?!(。| \ n)* a)"、 "A"、MyString)。 "無効なregexp"は動作しません。あなたは何か考えていますか? – Rtist
Rの正規表現がルックアウトをサポートしていない可能性があります。私はR開発者ではありません。一般的な解決策を提供しようとしました。とにかく、それはルックアウトをサポートしていない場合は、ちょうど私の解決策をダンプ、それはその場合は助けになりません。もう一つのアイデアですが、Rで可能かどうかは分かりませんが、あなたの文字列を逆向きに繰り返すことはできますか?もしそうなら、最初に見つかった 'a'(文字列中の最後の' a'と等しく、あなたが後方に向かうのを見て)を置き換えて、望みの結果を得ることができます。 – PixelMaster
私はそれがうまくいかない理由を理解しようとします。タンク – Rtist
- 1. 1つの出現箇所を正規表現に置き換えます
- 2. 最初の出現箇所を '。'に置き換えます。 SQL文字列に
- 3. 最後に出現した数字を置き換える正規表現
- 4. 正規表現を使用して文字列を置き換えます。
- 5. 正規表現を使用して文字列内の最後のカンマを置き換えます。
- 6. 正規表現文字列の置換。
- 7. 正規表現の文字列置換
- 8. JS文字列:正規表現のインデックスに置き換え
- 9. 正規表現を乗算して文字列に置き換えます。
- 10. 正規表現を使用して文字を置換する
- 11. 文字列の2番目の出現箇所のみを置換します。
- 12. JSON文字列で置き換える正規表現
- 13. ReplaceAllは部分文字列の最初の出現箇所を置き換えます
- 14. 置き換えを使用してSQL Serverの正規表現
- 15. 正規表現を使用して、NSStringのTextfieldの文字列を検索して置き換えます。
- 16. は、正規表現は、文字列の特殊文字を置き換える
- 17. 文字列内の文字を置換する正規表現
- 18. Pythonの正規表現を辞書の文字列に置き換えます。
- 19. "[" "]"を文字列の一重引用符 "'"に置き換える正規表現
- 20. jQueryを使用して文字列を置き換える置換と正規表現
- 21. 正規表現を使用して文字列のパラメータを置換する
- 22. HashMap文字列の値を正規表現に置き換えます
- 23. Pythonの正規表現は、文字列をパターンに置き換えます。
- 24. php文字列の代わりに正規表現を置き換えます。
- 25. 正規表現はPython 3の文字列を置き換えます
- 26. 文字列内の数字を置き換えるための正規表現
- 27. 正規表現を使用して文字列を動的英数字に置き換えます
- 28. awk正規表現文字/パターンの最後の出現
- 29. 特殊文字を正規表現に置き換えるJava
- 30. 正規表現の最後の文字
ありがとうございました。あなたは "A \\ 1"を使用せず、空いているプレースメントを提案していますか?文字列中の最後の "a"を伝える正規表現です。 – Rtist