This R package provides 4 tiny regex tools to extract, match, and
replace named regex groups in strings. It contains in addition to 3
functions groups()
, match_group()
and
replace_group()
and an R6
class
Replacer
which is thought as the main interface of this
package.
You can install this package by installing it from CRAN or from this GitHub repository.
The package offers three core functions to interact with strings using regular expressions with named groups:
Additionally, it includes an R6 class called Replacer that encapsulates these functionalities for a more object-oriented approach to regex-based operations.
I couldn’t use match()
and replace()
as
generic functions, because there are already generic functions which
require a specific set of arguments. By using an R6 class, I was free to
choose the arguments for match()
and
replace()
.
This function extracts all named groups from a string based on a provided regex pattern.
Extract the value of a specific named group from the string.
Replace the value of a specific named group with a new string.
The Replacer class in the regreplace package provides utilities for regex operations, such as matching and replacing named groups.
library(regreplaceR)
# Create a new Replacer object
r <- Replacer$new(pattern = ".*?_(?P<date>\\d{8}-\\d{6})(?P<ext>\\..+$)")
# Match a group within a string
date <- r$match("file_20230905-123456.txt", "date")
# Replace the value of a matched group
modified_string <- r$replace("file_20230905-123456.txt", "date", "20240905-123456")
## simpler example:
# Create a Replacer object with a regex pattern
r <- Replacer$new(pattern="(?P<name>\\w+) is (?P<age>\\d+)")
# Match the "name" group in the string
name_match <- r$match("Jane is 25", "name")
print(name_match) # Should print "Jane"
#> [1] "Jane"
# Match the "age" group in the string
age_match <- r$match("Jane is 25", "age")
print(age_match) # Should print "25"
#> [1] "25"
# Replace the "name" group in the string
replaced_string <- r$replace("Jane is 25", "name", "John")
print(replaced_string) # Should print "John is 25"
#> [1] "John is 25"
This package is licensed under the MIT License. See LICENSE for details.
Happy regexing! If you have any questions or find any bugs, please feel free to open an issue on the GitHub repository.