1. ホーム
  2. regex

[解決済み] 正規表現にマッチするものを抽出する

2022-08-29 01:13:09

質問

文字列から数値を抽出しようとしています。

というようなことをやって [0-9]+ という文字列の上に "aaa12xxx" という文字列を生成し "12" .

みたいな感じかと。

> grep("[0-9]+", "aaa12xxx", value=TRUE)
[1] "aaa12xxx"

そして、考えたのは...

> sub("[0-9]+", "\\1", "aaa12xxx")
[1] "aaaxxx"

でも、何らかの形でやっている反応がありました。

> sub("[0-9]+", "ARGH!", "aaa12xxx")
[1] "aaaARGH!xxx"

細かいところで見落としているところがあります。

どのように解決するのですか?

既存のすべての正規表現操作を一貫した構文でラップし、不足しているいくつかの操作を追加した新しいstringrパッケージを使用します。

library(stringr)
str_locate("aaa12xxx", "[0-9]+")
#      start end
# [1,]     4   5
str_extract("aaa12xxx", "[0-9]+")
# [1] "12"