キャプチャ グループ(括弧) と文字列を含む正規表現が与えられた場合、キャプチャ グループに一致するすべての部分文字列、つまり通常 "\1"、"\2" で参照される部分文字列を取得するにはどうすればよいですか?
例: "xy" で始まる数字をキャプチャする正規表現を考えてみましょう:
s <- "xy1234wz98xy567"
r <- "xy(\\d+)"
望ましい結果:
[1] "1234" "567"
最初の試行: gregexpr
:
regmatches(s,gregexpr(r,s))
#[[1]]
#[1] "xy1234" "xy567"
パターン全体に一致する部分文字列を返すため、私が望むものではありません。
2 回目の試行: regexec
:
regmatches(s,regexec("xy(\\d+)",s))
#[[1]]
#[1] "xy1234" "1234"
パターン全体とキャプチャ グループの最初の一致のみを返すため、私が望むものではありません。
extendsとして拡張するgregexec
関数があれば、私の問題は解決されます。regexec
gregexpr
regexpr
問題はregmatches
、任意の正規表現でキャプチャ グループに一致するすべての部分文字列 (または上記の例のように渡すことができるインデックス) を取得する方法です。
注: 上記のパターンr
はばかげた例に過ぎず、任意のままにしておく必要があります。