modern-ahocorasick
Advanced tools
Comparing version 2.0.1 to 2.0.2
{ | ||
"name": "modern-ahocorasick", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"description": "modern-ahocorasick", | ||
@@ -5,0 +5,0 @@ "type": "module", |
129
README.md
@@ -12,3 +12,5 @@ # modern-ahocorasick | ||
```sh | ||
<npm/yarn/pnpm> i modern-ahocorasick | ||
npm i modern-ahocorasick | ||
yarn add modern-ahocorasick | ||
pnpm i modern-ahocorasick | ||
``` | ||
@@ -19,9 +21,9 @@ | ||
```ts | ||
// cjs | ||
const AhoCorasick = require('modern-ahocorasick'); | ||
// esm | ||
import AhoCorasick from 'modern-ahocorasick' | ||
// cjs | ||
const AhoCorasick = require('modern-ahocorasick') | ||
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc']); | ||
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.'); | ||
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc']) | ||
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.') | ||
@@ -35,4 +37,121 @@ // [ [ 19, [ 'keyword1' ] ], [ 47, [ 'keyword2' ] ] ] | ||
## API | ||
### Constructor | ||
#### `constructor(keywords: string[])` | ||
Initializes the Aho-Corasick state machine with the provided `keywords`. | ||
**Parameters**: | ||
- `keywords`: An array of strings representing the keywords to search for. | ||
**Example**: | ||
```typescript | ||
const keywords = ['he', 'she', 'his', 'hers'] | ||
const ac = new AhoCorasick(keywords) | ||
``` | ||
--- | ||
### Methods | ||
#### `search(str: string): [number, string[]][]` | ||
Searches the input string `str` for occurrences of any of the keywords and returns a list of matches. | ||
**Parameters**: | ||
- `str`: The input string to search. | ||
**Returns**: | ||
- An array of tuples. Each tuple contains: | ||
- The ending index of the match in the input string. | ||
- An array of matched keywords at that position. | ||
**Example**: | ||
```typescript | ||
const ac = new AhoCorasick(['keyword1', 'keyword2', 'etc']) | ||
const results = ac.search('should find keyword1 at position 19 and keyword2 at position 47.') | ||
// [ [ 19, [ 'keyword1' ] ], [ 47, [ 'keyword2' ] ] ] | ||
``` | ||
--- | ||
#### `match(str: string): boolean` | ||
Checks if any keyword exists in the input string `str`. | ||
**Parameters**: | ||
- `str`: The input string to search. | ||
**Returns**: | ||
- `true` if any keyword is found. | ||
- `false` otherwise. | ||
**Example**: | ||
```typescript | ||
const ac = new AhoCorasick(['he', 'she', 'his', 'hers']) | ||
console.log(ac.match('ushers')) // Output: true | ||
console.log(ac.match('xyz')) // Output: false | ||
``` | ||
--- | ||
### Internal Functionality | ||
While the `_buildTables` method is not part of the public API, it is responsible for building the transition (`gotoFn`), output, and failure functions used by the Aho-Corasick algorithm. | ||
--- | ||
## Examples | ||
### Example 1: Basic Search | ||
```typescript | ||
const keywords = ['cat', 'bat', 'rat'] | ||
const ac = new AhoCorasick(keywords) | ||
const text = 'the cat chased the rat while a bat flew by' | ||
const matches = ac.search(text) | ||
``` | ||
### Example 2: Check Match Presence | ||
```typescript | ||
const ac = new AhoCorasick(['abc', '123']) | ||
console.log(ac.match('hello abc world')) // Output: true | ||
console.log(ac.match('hello world')) // Output: false | ||
``` | ||
--- | ||
### Example: Case-Insensitive Search | ||
```typescript | ||
const keywords = ['hello', 'world'] | ||
const ac = new AhoCorasick(keywords.map(k => k.toLowerCase())) | ||
const text = 'Hello World' | ||
const matches = ac.search(text.toLowerCase()) | ||
console.log(matches) | ||
// Output: [ | ||
// [4, ["hello"]], | ||
// [10, ["world"]] | ||
// ] | ||
``` | ||
This document serves as a complete guide for using the `AhoCorasick` class for multi-pattern string matching. | ||
## License | ||
[The MIT License](LICENSE) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12663
155