Name
SPVM::Regex - Regular Expression
Usage
use Regex;
# Pattern match
{
my $re = Regex->new("ab*c");
my $string = "zabcz";
my $match = $re->match("zabcz");
}
# Pattern match - UTF-8
{
my $re = Regex->new("あ+");
my $string = "いあああい";
my $match = $re->match($string);
}
# Pattern match - Character class and the nagation
{
my $re = Regex->new("[A-Z]+[^A-Z]+");
my $string = "ABCzab";
my $match = $re->match($string);
}
# Pattern match with captures
{
my $re = Regex->new("^(\w+) (\w+) (\w+)$");
my $string = "abc1 abc2 abc3";
my $match = $re->match($string);
if ($match) {
my $cap1 = $re->cap1;
my $cap2 = $re->cap2;
my $cpa3 = $re->cap3;
}
}
# Replace
{
my $re = Regex->new("abc");
my $string = "ppzabcz";
# "ppzABCz"
my $result = $re->replace($string, "ABC");
my $replaced_count = $re->replaced_count;
}
# Replace with a callback and capture
{
my $re = Regex->new("a(bc)");
my $string = "ppzabcz";
# "ppzABbcCz"
my $result = $re->replace($string, method : string ($re : Regex) {
return "AB" . $re->cap1 . "C";
});
}
# Replace global
{
my $re = Regex->new("abc");
my $string = "ppzabczabcz";
# "ppzABCzABCz"
my $result = $re->replace_g($string, "ABC");
}
# Replace global with a callback and capture
{
my $re = Regex->new("a(bc)");
my $string = "ppzabczabcz";
# "ppzABCbcPQRSzABCbcPQRSz"
my $result = $re->replace_g($string, method : string ($re : Regex) {
return "ABC" . $re->cap1 . "PQRS";
});
}
# . - single line mode
{
my $re = Regex->new("(.+)", "s");
my $string = "abc\ndef";
my $match = $re->match($string);
unless ($match) {
return 0;
}
unless ($re->cap1 eq "abc\ndef") {
return 0;
}
}
Description
Regex
provides regular expression.
Regex
is a SPVM module.
The implementation is Google RE2.
Caution
SPVM is yet experimental status.
Regular Expression Syntax
See Google RE2 Syntax.
Fields
captures
has captures : ro string[];
Get the captured strings.
match_start
has match_start : ro int;
Get the start byte offset of the matched string.
match_length
has match_length : ro int;
Get the length of the matched string.
replaced_count
has replaced_count : ro int;
Get the replaced count.
Class Methods
new
static method new : Regex ($pattern : string, $flags = undef : string)
Create a new Regex object and compile the regex pattern and the flags.
my $re = Regex->new("^ab+c");
my $re = Regex->new("^ab+c", "s");
Instance Methods
match
method match : int ($string : string, $offset = 0 : int, $length = -1 : int)
The Alias for the following match_forward method.
my $ret = $self->match_forward($string, \$offset, $length);
match_forward
method match_forward : int ($string : string, $offset : int*, $length = -1 : int)
Execute pattern matching to the string range from the offset to the position proceeded by the length.
The offset is updated to the next starting position.
If the pattern matching is successful, return 1
, otherwise return 0
.
The string must be defined. Otherwise an exception will be thrown.
The offset + the length must be less than or equal to the length of the string. Otherwise an exception will be thrown.
The regex compililation is not yet performed. Otherwise an exception will be thrown.
replace
method replace : string ($string : string, $replace : object of string|Regex::Replacer, $offset = 0 : int, $length = -1 : int, $options = undef : object[])
The Alias for the following replace_common method.
my $ret = $self->replace_common($string, $replace, \$offset, $length, $options);
replace_g
method replace_g : string ($string : string, $replace : object of string|Regex::Replacer, $offset = 0 : int, $length = -1 : int, $options = undef : object[])
The Alias for the following replace_common method.
my $new_options_list = List->new($options);
$new_options_list->push("global");
$new_options_list->push(1);
$options = $new_options_list->to_array;
return $self->replace_common($string, $replace, \$offset, $length, $options);
replace_common
method replace_common : string ($string : string, $replace : object of string|Regex::Replacer,
$offset_ref : int*, $length = -1 : int, $options = undef : object[])
Replace the part of the pattern matching in the string range from the offset to the position proceeded by the length with the replacement string or callback.
The options can be used.
The string must be defined. Otherwise an exception will be thrown.
The replacement must be a string or a Regex::Replacer object. Otherwise an exception will be thrown.
The offset must be greater than or equal to 0. Otherwise an exception will be thrown.
The offset + the length must be less than or equal to the length of the string. Otherwise an exception will be thrown.
Internally match_forward is used for the pattern matching.
Options of replace_common
global
If global
is a true value, the global replacement is performed.
cap1
method cap1 : string ()
The alias for $re->captures->[1]
.
cap2
method cap2 : string ()
The alias for $re->captures->[2]
.
cap3
method cap3 : string ()
The alias for $re->captures->[3]
.
cap4
method cap4 : string ()
The alias for $re->captures->[4]
.
cap5
method cap5 : string ()
The alias for $re->captures->[5]
.
cap6
method cap6 : string ()
The alias for $re->captures->[6]
.
cap7
method cap7 : string ()
The alias for $re->captures->[7]
.
cap8
method cap8 : string ()
The alias for $re->captures->[8]
.
cap9
method cap9 : string ()
The alias for $re->captures->[9]
.
cap10
method cap10 : string ()
The alias for $re->captures->[10]
.
cap11
method cap11 : string ()
The alias for $re->captures->[11]
.
cap12
method cap12 : string ()
The alias for $re->captures->[12]
.
cap13
method cap13 : string ()
The alias for $re->captures->[13]
.
cap14
method cap14 : string ()
The alias for $re->captures->[14]
.
cap15
method cap15 : string ()
The alias for $re->captures->[15]
.
cap16
method cap16 : string ()
The alias for $re->captures->[16]
.
cap17
method cap17 : string ()
The alias for $re->captures->[17]
.
cap18
method cap18 : string ()
The alias for $re->captures->[18]
.
cap19
method cap19 : string ()
The alias for $re->captures->[19]
.
cap20
method cap20 : string ()
The alias for $re->captures->[20]
.