3
gsub('[a-zA-Z]+([0-9]{5})','\\1','htf84756.iuy')
[1] "84756.iuy"

84756を取得したいのですが、どうすればよいですか?

4

4 に答える 4

6

gregexpr()withを使用regmatches()すると、パターンが実際に抽出したいビットと一致する必要があるだけでよいという利点があります。

string <- 'htf84756.iuy'
pat <- "(\\d){5}"

regmatches(string, gregexpr(pat, string))[[1]]
# [1] "84756"

(実際には、これらの関数は、指定された文字列に一致する複数の部分文字列が含まれている可能性がある場合に役立ちますpat。)

于 2012-10-19T01:56:18.077 に答える
5

これを試して:

R> gsub('[a-zA-Z]+([0-9]{5}).*','\\1','htf84756.iuy')
[1] "84756"
R> 

.*5桁の後に終了するには、「貪欲な」正規表現の最後に追加する必要があります。

于 2012-10-19T01:44:10.183 に答える
2

これは、何を追加するかに基づいて(Dirkの回答のように)同様に機能する可能性があります。

gsub('[a-zA-Z]+([0-9]{5})\\.([a-zA-Z])+','\\1','htf84756.iuy')

数値文字列だけが必要な場合は、これも役立つ場合があります。

gsub('[^0-9]','','htf84756.iuy')
于 2012-10-19T01:45:40.623 に答える
2

を使用するとstringr、次を使用できますstr_extract

library(stringr)
str_extract("htf84756.iuy", "[0-9]+")
于 2012-10-19T12:46:44.767 に答える