regmatches()
、R-2.14.0 以降でのみ利用可能で、 「 regexpr
、gregexpr
またはregexec
」によって取得された一致データから、一致した部分文字列を抽出または置換できます。
入力文字列の最初の空白でクッションされた 4 桁の部分文字列、またはそのようなすべてregmatches()
の部分文字列を抽出するために使用できる方法の例を次に示します。
## Example strings and pattern
x <- "coihr 1234 &/()= jngm 34 ljd" # string with 1 matching substring
xx <- "coihr 1234 &/()= jngm 3444 6789 ljd" # string with >1 matching substring
pat <- "(?<=\\s)(\\d{4})(?=\\s)"
## Use regexpr() to extract *1st* matching substring
as.numeric(regmatches(x, regexpr(pat, x, perl=TRUE)))
# [1] 1234
as.numeric(regmatches(xx, regexpr(pat, xx, perl=TRUE)))
# [1] 1234
## Use gregexpr() to extract *all* matching substrings
as.numeric(regmatches(xx, gregexpr(pat, xx, perl=TRUE))[[1]])
# [1] 1234 3444 6789
numeric(0)
(これは、基準に一致する部分文字列を含まない文字列に対して返されることに注意してください)。