Regexp-like string matcher.
npm install @textlint/regexp-string-matcherRegexp-like string matcher library.
Install with npm:
npm install @textlint/regexp-string-matcher
Interface:
``ts`
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:
`js
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"] }
]);
`
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 |
:warning: 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.
- Regular Expressions - JavaScript | MDN
Text:
``
This is a pen.
RegExp-like String:
`json`
[
"/a (\\w+)/"
]
Results:
``
[ { match: 'a pen', startIndex: 8, endIndex: 13, captures: ["pen"] } ]
text:
`markdown`
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:
`json`
[
"GitHub"
]
results: 2 hits
`markdown`
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.
text:
`markdown`
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:
`json`
[
"/git/i"
]
results:: 3 hits
`markdown`
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.
You should escape special charactor like \d in RegExp-like string.
text:
`markdown`
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:
`json`
[
"/\\d{4}-\\d{2}-\\d{2}/"
]
results:: 1 hit
`markdown`
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.
text:
`markdown
===START===
1st inline text.
===END===
===START===
2nd inline text.
===END===
`
pattern:
`json
[
"/===START===[\\s\\S]*?===END===/m"
]
`
results:: 2 hits
`markdown
**===START===
1st inline text.
===END===**
**===START===
2nd inline text.
===END===**
`
For more details, see test/snapshots
text:
`markdown`
TODO [Issue #1]: it will be fixed
patterns:
`json`
[
"/TODO \\[Issue #\\d+\\]:/i"
]
:memo: You should escape bracket both. \\[ and \\],
results:
``
TODO [Issue #1]: it will be fixed
See Releases page.
Install devDependencies and Run npm test:
npm i -d && npm test
1. Create new dir to ./snapshots/input.txt
2. Add and input-patterns.jsonnpm run test:updateSnapshot
3. Run npm test
4. You should verify the output results manually
5. Run and pass it
5. Commit it
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
1. Fork it!
2. Create your feature branch: git checkout -b my-new-featuregit commit -am 'Add some feature'
3. Commit your changes: git push origin my-new-feature`
4. Push to the branch:
5. Submit a pull request :D
MIT © azu