regee
v0.4.1
Published
Regular expressions with named groups and backreferences with names
Downloads
4
Maintainers
Readme
RegEE
Description
Regular Expression with Extended functionality. RegEE JavaScript module. This module allows the use of named groups in a regular expression.
Changes
- 0.4.0
- changed importing syntax
- added methods: match and replace
Installing module
C:\npm install regee
Usage in code
// for simple import
require('regee');
//or
import 'regee';
// for using as class
const { RegEE } = require('regee')
// or
import { RegEE } from 'regee'
Syntax
|#| method | syntax | meaning | |--|--|--|--| |1| ematch | string.ematch( pattern[, flags] ) | matching string and returns an array| |2| match | string.match( new RegEE( pattern[, flags] ) )|matching string and returns an array | |3| ereplace | string.ereplace( pattern, replacer[, flags] )|replace string and return it | |4| replace | string.replace( new RegEE( pattern[, flags] ), replacer )|replace string and return it |
Parameters
|#| parameter | description | |--|--|--| |1| pattern | Required. The string or regular expression as a string that will be replaced by the replacer. | |2| replacer | Required. New substring or function. | |3| flags | Optional. One of the javascript regexp flags and the added x flag. |
syntax sample:
// returns an array of matches found
str.ematch( pattern[, flags])
// or
str.match(new RegEE(pattern[, flags]))
// returns the result of the replacement as a string
str.ereplace(pattern, replacer[, flags])
// or
str.replace(new RegEE(pattern[, flags]), replacer)
Flag x
|#| character | meaning | |--|--|--| |1|x| ignore whitespace |
example:
var str = 'My name is John Smith. I am 25 year old';
// or ------------------------------------------------------
var result = str.ematch(`
My\\s+name\\s+is
\\s+(?<FirstName>\\b\\w+\\b)
`, 'x');
// or ------------------------------------------------------
var result = str.match(new RegEE(`
My\\s+name\\s+is
\\s+(?<FirstName>\\b\\w+\\b)
`,'x'));
Pattern
Named group
|#| regexp | meaning | |--|--|--| |1|(?<somename>\w+)|Named group|
example:
var str = 'My name is John Smith. I am 25 year old';
// or --------------------------------------------------------------------------------
// name of group
// |
var result = str.ematch('My\\s+name\\s+is\\s+(?<FirstName>\\b\\w+\\b)');
// or --------------------------------------------------------------------------------
var result = str.match(new RegEE('My\\s+name\\s+is\\s+(?<FirstName>\\b\\w+\\b)'));
Named back reference
|#| regexp | meaning | |--|--|--| |1|\k<somename>|Back reference for named group| |2|\g<somename>|Back reference for named group|
example:
var str = 'to be or not to be';
// or --------------------------------------------------------------------------------
// name of group <---------------- backreference
// | |
var isHamlet = str.ematch('(?<TB>to\\s+be)\\s+or\\s+not\\s+\\k<TB>', 'i');
// or --------------------------------------------------------------------------------
var isHamlet = str.match(new RegEE('(?<TB>to\\s+be)\\s+or\\s+not\\s+\\k<TB>', 'i');
Replacer
...as string
String to replace. The string can contain the result value taken from the capture group.
|#| syntax | meaning | |--|--|--| |1|$+{ groupName }| captured value from the named group |
example:
var oldString = 'My name is John Smith. I am 25 year old';
// or --------------------------------------------------------------------------------
var newString = str.ereplace('My\\s+name\\s+is\\s+(?<FirstName>\\w+)\\s+(?<LastName>\\w+)\\.\\s+I\\s+am\\s+(?<Age>\\d+)\\s+year\\s+old', '$+{FirstName}: $+{Age}');
// or --------------------------------------------------------------------------------
var newString = str.replace(new RegEE(`My\\s+name\\s+is
\\s+(?<FirstName>\\w+)
\\s+(?<LastName>\\w+)\\.\\s+I\\s+am
\\s+(?<Age>\\d+)\\s+year\\s+old`, 'x'), '$+{FirstName}: $+{Age}');
// result ----------------------------------------------------------------------------
console.log(newString); // --> John: 25
...as function
The function takes two parameters. The first parameter is a matching string, and the second is an array of captured values. The function returns a string to replace the match string.
|#| syntax | meaning | |--|--|--| |1| function( string, groups ) { ...some code; return '...some string'; } |return a string for replacement | |2| ( string, groups ) => { ...some code; return '...some string'; } |return a string for replacement |
example:
var oldString = 'My name is John Smith. I am 25 year old.';
// or --------------------------------------------------------------------------------
var newString = str.ereplace('My\\s+name\\s+is\\s+(?<FirstName>\\w+)\\s+(?<LastName>\\w+)\\.\\s+I\\s+am\\s+(?<Age>\\d+)\\s+year\\s+old', function (match, groups) {
console.log(match) // --> My name is John Smith. I am 25 year old
let res = groups.FirstName + ': ' + groups.Age
return res;
});
// or --------------------------------------------------------------------------------
var newString = str.replace(new RegEE(`My\\s+name\\s+is
\\s+(?<FirstName>\\w+)
\\s+(?<LastName>\\w+)\\.\\s+I\\s+am
\\s+(?<Age>\\d+)\\s+year\\s+old`, 'x'), function (match, groups) {
console.log(match) // --> My name is John Smith. I am 25 year old
let res = groups.FirstName + ': ' + groups.Age
return res;
});
// or --------------------------------------------------------------------------------
var newString = str.replace(new RegEE(`My\\s+name\\s+is
\\s+(?<FirstName>\\w+)
\\s+(?<LastName>\\w+)\\.\\s+I\\s+am
\\s+(?<Age>\\d+)\\s+year\\s+old`, 'x'), (match, groups) => groups.FirstName + ': ' + groups.Age);
// result ----------------------------------------------------------------------------
console.log(newString); // --> John: 25
Examples
example matching:
var str = 'My name is John Smith. I am 25 year old. My name is Jasmine. I am 32 year old.';
//You can using method 'ematch' for String objects
var result = str.ematch(`My\\s+name\\s+is
\\s+(?<FirstName>\\w+)
\\s+(?<LastName>\\w+)\\.\\s+I\\s+am
\\s+(?<Age>\\d+)\\s+year\\s+old`, 'gx');
console.log(result[0].FirstName); // --> John
console.log(result[0][1]); // --> John
console.log(result[1].FirstName); // --> Jasmine
console.log(result); // see down...
/*
This action returns arrays, the number of arrays is equal to the number of matches.
The first element of each array contains a string that matches the pattern.
result is...
[
[
'My name is John Smith. I am 25 year old',
'John',
'Smith',
'25',
FirstName: 'John',
LastName: 'Smith',
Age: '25'
],
[
'My name is Jasmine. I am 32 year old',
'Jasmine',
undefined,
'32',
FirstName: 'Jasmine',
LastName: undefined,
Age: '32'
]
]
*/
example replacing:
var str = 'My name is John Smith. I am 25 year old. My name is Jasmine. I am 32 year old.';
var newString = str.replace(new RegEE(`My\\s+name\\s+is
\\s+(?<FirstName>\\w+)
\\s+(?<LastName>\\w+)\\.\\s+I\\s+am
\\s+(?<Age>\\d+)\\s+year\\s+old`, 'gx'), (match, groups) => {
console.log(match) // --> My name is John Smith. I am 25 year old
console.log(groups[1]); // --> John
console.log(groups.FirstName); // --> John
let res = groups.FirstName + ': ' + groups.Age + "\n";
return res;
});
console.log(newString); // see down...
/*
John: 25
Jasmine: 32
*/
Author
Khalid Dudaev