MyNixOS website logo
Description

Match Regular Expressions with a Nicer 'API'.

A small wrapper on 'regexpr' to extract the matches and captured groups from the match of a regular expression to a character vector.

rematch

Match Regular Expressions with a Nicer ‘API’

R-CMD-check CRAN RStudio mirrordownloads CoverageStatus

A small wrapper on ‘regexpr’ to extract the matches and captured groups from the match of a regular expression to a character vector.

Installation

source("https://install-github.me/gaborcsardi/rematch")

Usage

library(rematch)
dates <- c("2016-04-20", "1977-08-08", "not a date", "2016",
  "76-03-02", "2012-06-30", "2015-01-21 19:58")
isodate <- "([0-9]{4})-([0-1][0-9])-([0-3][0-9])"
re_match(text = dates, pattern = isodate)
#>      .match                       
#> [1,] "2016-04-20" "2016" "04" "20"
#> [2,] "1977-08-08" "1977" "08" "08"
#> [3,] NA           NA     NA   NA  
#> [4,] NA           NA     NA   NA  
#> [5,] NA           NA     NA   NA  
#> [6,] "2012-06-30" "2012" "06" "30"
#> [7,] "2015-01-21" "2015" "01" "21"
isodaten <- "(?<year>[0-9]{4})-(?<month>[0-1][0-9])-(?<day>[0-3][0-9])"
re_match(text = dates, pattern = isodaten)
#>      .match       year   month day 
#> [1,] "2016-04-20" "2016" "04"  "20"
#> [2,] "1977-08-08" "1977" "08"  "08"
#> [3,] NA           NA     NA    NA  
#> [4,] NA           NA     NA    NA  
#> [5,] NA           NA     NA    NA  
#> [6,] "2012-06-30" "2012" "06"  "30"
#> [7,] "2015-01-21" "2015" "01"  "21"
github_repos <- c("metacran/crandb", "jeroenooms/[email protected]",
                  "jimhester/covr#47", "hadley/dplyr@*release",
                  "r-lib/remotes@550a3c7d3f9e1493a2ba",
                  "/$&@R64&3")
owner_rx <- "(?:(?<owner>[^/]+)/)?"
repo_rx <- "(?<repo>[^/@#]+)"
subdir_rx <- "(?:/(?<subdir>[^@#]*[^@#/]))?"
ref_rx <- "(?:@(?<ref>[^*].*))"
pull_rx <- "(?:#(?<pull>[0-9]+))"
release_rx <- "(?:@(?<release>[*]release))"
ref_or_pull_or_release_rx <-
  sprintf("(?:%s|%s|%s)?", ref_rx, pull_rx, release_rx)
github_rx <- sprintf("^(?:%s%s%s%s|(?<catchall>.*))$",
                     owner_rx, repo_rx, subdir_rx, ref_or_pull_or_release_rx)
out <- re_match(text = github_repos, pattern = github_rx)
out
#>      .match                               owner        repo      subdir
#> [1,] "metacran/crandb"                    "metacran"   "crandb"  ""    
#> [2,] "jeroenooms/[email protected]"             "jeroenooms" "curl"    ""    
#> [3,] "jimhester/covr#47"                  "jimhester"  "covr"    ""    
#> [4,] "hadley/dplyr@*release"              "hadley"     "dplyr"   ""    
#> [5,] "r-lib/remotes@550a3c7d3f9e1493a2ba" "r-lib"      "remotes" ""    
#> [6,] "/$&@R64&3"                          ""           ""        ""    
#>      ref                    pull release    catchall   
#> [1,] ""                     ""   ""         ""         
#> [2,] "v0.9.3"               ""   ""         ""         
#> [3,] ""                     "47" ""         ""         
#> [4,] ""                     ""   "*release" ""         
#> [5,] "550a3c7d3f9e1493a2ba" ""   ""         ""         
#> [6,] ""                     ""   ""         "/$&@R64&3"

License

MIT © Mango Solutions; Posit Software, PBC.

Metadata

Version

2.0.0

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows