Package Exports
- @textlint/regexp-string-matcher
- @textlint/regexp-string-matcher/lib/regexp-string-matcher.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@textlint/regexp-string-matcher) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@textlint/regexp-string-matcher 
Regexp-like string matcher library.
Install
Install with npm:
npm install @textlint/regexp-string-matcher
Usage
Interface:
export interface matchPatternResult {
match: string;
startIndex: number;
endIndex: number;
}
/**
* Match regExpLikeStrings and return matchPatternResults
* @param text target text
* @param regExpLikeStrings an array of pattern string
*/
export declare const matchPatterns: (text: string, regExpLikeStrings: string[]) => matchPatternResult[];
Example:
import { matchPatterns } from "@textlint/regexp-string-matcher";
const inputText = `
GitHub is a web-based hosting service for version control using git.
It is mostly used for computer code.
GitHub launched in 2018-04-10.`;
// RegExp like strings
const inputPatterns = [
"git", // => /git/g
"/github/i", // => /github/ig
"/(\\d{4})-(\\d{2})-(\\d{2})/" // => /\d{4}-\d{2}-\d{2}/g
];
const results = matchPatterns(inputText, inputPatterns);
assert.deepStrictEqual(results, [
{ match: "GitHub", startIndex: 1, endIndex: 7, captures: [] },
{ match: "git", startIndex: 65, endIndex: 68, captures: [] },
{ match: "GitHub", startIndex: 107, endIndex: 113, captures: [] },
{ match: "2018-04-10", startIndex: 126, endIndex: 136, captures: ["2018", "04", "10"] }
]);
RegExp-like String
This library aim to represent RegExp in JSON and use it for ignoring words.
g
(global) flag and u
(unicode) is added by default.
Input | Ouput | Note |
---|---|---|
"str" |
/str/gu |
convert string to regexp with global |
"/str/" |
/str/gu |
|
"/str/g" |
/str/gu |
Duplicated g is just ignored |
"/str/i" |
/str/igu |
|
"/str/u" |
/str/ug |
|
"/str/m" |
/str/mgu |
|
"/str/y" |
/str/ygu |
|
--- | --- | --- |
"/\\d+/" |
/\d+/gu |
You should escape meta character like \d |
"/(\\d+)/" |
/\d+/gu |
You can use capture |
⚠️ You should escape meta character like \d
in RegExp-like string.
For example, If you want to write \w
(any word) in RegExp-like string, you should escape \w
to \\w
.
Text:
This is a pen.
RegExp-like String:
[
"/a (\\w+)/"
]
Results:
[ { match: 'a pen', startIndex: 8, endIndex: 13, captures: ["pen"] } ]
Examples
string
text:
GitHub is a web-based hosting service for version control using git.
It is mostly used for computer code.
GitHub launched in 2018-04-10.
pattern:
[
"GitHub"
]
results: 2 hits
**GitHub** is a web-based hosting service for version control using git.
It is mostly used for computer code.
**GitHub** launched in 2018-04-10.
Ignore Case match
text:
GitHub is a web-based hosting service for version control using git.
It is mostly used for computer code.
GitHub launched in 2018-04-10.
pattern:
[
"/git/i"
]
results:: 3 hits
**Git**Hub is a web-based hosting service for version control using **git**.
It is mostly used for computer code.
**Git**Hub launched in 2018-04-10.
Special character
You should escape special charactor like \d
in RegExp-like string.
text:
GitHub is a web-based hosting service for version control using git.
It is mostly used for computer code.
GitHub launched in 2018-04-10.
pattern:
[
"/\\d{4}-\\d{2}-\\d{2}/"
]
results:: 1 hit
GitHub is a web-based hosting service for version control using git.
It is mostly used for computer code.
GitHub launched in **2018-04-10**.
Multi-line
text:
===START===
1st inline text.
===END===
===START===
2nd inline text.
===END===
pattern:
[
"/===START===[\\s\\S]*?===END===/m"
]
results:: 2 hits
**===START===
1st inline text.
===END===**
**===START===
2nd inline text.
===END===**
For more details, see test/snapshots
Escape bracket
text:
TODO [Issue #1]: it will be fixed
patterns:
[
"/TODO \\[Issue #\\d+\\]:/i"
]
📝 You should escape bracket both. \\[
and \\]
,
results:
**TODO [Issue #1]:** it will be fixed
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
npm i -d && npm test
How to add snapshot tests?
- Create new dir to
./snapshots/<name>/
- Add
input.txt
andinput-patterns.json
- Run
npm run test:updateSnapshot
- You should verify the output results manually
- Run
npm test
and pass it - Commit it
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu