0.4.1 • Published 6 years ago

regee v0.4.1

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago

RegEE

Current Version GitHub release Depedency DevDepedency MIT license

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

#methodsyntaxmeaning
1ematchstring.ematch( pattern, flags )matching string and returns an array
2matchstring.match( new RegEE( pattern, flags ) )matching string and returns an array
3ereplacestring.ereplace( pattern, replacer, flags )replace string and return it
4replacestring.replace( new RegEE( pattern, flags ), replacer )replace string and return it

Parameters

#parameterdescription
1patternRequired. The string or regular expression as a string that will be replaced by the replacer.
2replacerRequired. New substring or function.
3flagsOptional. 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

#charactermeaning
1xignore 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

#regexpmeaning
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

#regexpmeaning
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.

#syntaxmeaning
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.

#syntaxmeaning
1function( 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

License

MIT License