gsub('[a-zA-Z]+([0-9]{5})','\\1','htf84756.iuy')
[1] "84756.iuy"
84756を取得したいのですが、どうすればよいですか?
gregexpr()
withを使用regmatches()
すると、パターンが実際に抽出したいビットと一致する必要があるだけでよいという利点があります。
string <- 'htf84756.iuy'
pat <- "(\\d){5}"
regmatches(string, gregexpr(pat, string))[[1]]
# [1] "84756"
(実際には、これらの関数は、指定された文字列に一致する複数の部分文字列が含まれている可能性がある場合に役立ちますpat
。)
これを試して:
R> gsub('[a-zA-Z]+([0-9]{5}).*','\\1','htf84756.iuy')
[1] "84756"
R>
.*
5桁の後に終了するには、「貪欲な」正規表現の最後に追加する必要があります。
これは、何を追加するかに基づいて(Dirkの回答のように)同様に機能する可能性があります。
gsub('[a-zA-Z]+([0-9]{5})\\.([a-zA-Z])+','\\1','htf84756.iuy')
数値文字列だけが必要な場合は、これも役立つ場合があります。
gsub('[^0-9]','','htf84756.iuy')
を使用するとstringr
、次を使用できますstr_extract
。
library(stringr)
str_extract("htf84756.iuy", "[0-9]+")