Pattern: match()
与えられた文字列または Pattern
が対象の Pattern
に一致するかどうか検査します。
構文
pattern.match(s) => boolean
引数
-
s
:string
|Pattern
検査する文字列またはパターンです。
返値: boolean
一致する場合 true
, 一致しない場合 false
です。
例
それぞれの一致種別に対して、2つの文字列が一致するか検査した例です。
const { Pattern } = await Alier.import("/alier_sys/Pattern.js");
const exact = new Pattern({ pattern: "/foo/bar/baz/qux" }),
forward = new Pattern({ pattern: "/foo/bar/baz/*" }),
backward = new Pattern({ pattern: "*/bar/baz/qux" }),
partial = new Pattern({ pattern: "*/bar/baz/*" })
;
const s = "/foo/bar/baz/qux",
t = "/foo/bar/baz/qux/nose/foobar"
;
// 完全一致のパターンとの比較
console.log(`kind: "${exact.kind}", pattern: "${exact.pattern}"; match("${s}") ==> ${exact.match(s)}`);
// kind: "exact" , pattern: "/foo/bar/baz/qux" ;
// match("/foo/bar/baz/qux") ==> true
console.log(`kind: "${exact.kind}", pattern: "${exact.pattern}"; match("${t}") ==> ${exact.match(t)}`);
// kind: "exact" , pattern: "/foo/bar/baz/qux" ;
// match("/foo/bar/baz/qux/nose/foobar") ==> false
// 前方一致のパターンとの比較
console.log(`kind: "${forward.kind}", pattern: "${forward.pattern}"; match("${s}") ==> ${forward.match(s)}`);
// kind: "forward" , pattern: "/foo/bar/baz/*" ;
// match("/foo/bar/baz/qux") ==> true
console.log(`kind: "${forward.kind}", pattern: "${forward.pattern}"; match("${t}") ==> ${forward.match(t)}`);
// kind: "forward" , pattern: "/foo/bar/baz/*" ;
// match("/foo/bar/baz/qux/nose/foobar") ==> true
// 後方一致のパターンとの比較
console.log(`kind: "${backward.kind}", pattern: "${backward.pattern}"; matchAt("${s}") ==> ${backward.match(s)}`);
// kind: "backward" , pattern: "*/bar/baz/qux" ;
// match("/foo/bar/baz/qux") ==> true
console.log(`kind: "${backward.kind}", pattern: "${backward.pattern}"; matchAt("${t}") ==> ${backward.match(t)}`);
// kind: "backward" , pattern: "*/bar/baz/qux" ;
// match("/foo/bar/baz/qux/nose/foobar") ==> false
// 部分一致のパターンとの比較
console.log(`kind: "${partial.kind}", pattern: "${partial.pattern}"; match("${s}") ==> ${partial.match(s)}`);
// kind: "partial" , pattern: "*/bar/baz/*" ;
// match("/foo/bar/baz/qux") ==> true
console.log(`kind: "${partial.kind}", pattern: "${partial.pattern}"; matchAt("${t}") ==> ${partial.match(t)}`);
// kind: "partial" , pattern: "*/bar/baz/*" ;
// match("/foo/bar/baz/qux/nose/foobar") ==> true
解説
Pattern
に対しては Pattern.compare()
の順序比較の結果が同値かどうかを判定します。
string
に対しては Pattern::matchAt()
を呼び出し、その結果が 0
以上かどうかで判定します。