Documentation ¶
Overview ¶
patb パッケージは正規表現 LIKE な文字列パターンマッチを提供します.
patb は正規表現のような文字列パターンマッチを関数の組み合わせで記述できます. 単純な文字列のパターンマッチを高速に処理します.
キャラクタクラスを表す CharClass 型の関数と パターンマッチの表す Pattern 型の関数の組み合わせで処理する非常に単純な構造です.
pat では必要最低限の機能を提供していますが 必要に応じて CharClass 型の関数や Pattern 型の関数を用意して利用することもできます.
FindAllFunc, FindIndex, Match, ReplaceAll, ReplaceWrite などの関数は パターンマッチを指定する pat のほかに, パターンマッチの開始場所を高速に検索するために マッチする文字列の先頭文字を表すキャラクタクラス c を指定します. すべての文字を表す pat.All を指定することで c の定義を省略できます. 検索速度は遅くなりますが手軽に利用することができます.
Index ¶
- Variables
- func Equal(pat Pattern, s string) bool
- func FindAllFunc(c CharClass, pat Pattern, s string, fn func(m string) error) error
- func FindIndex(c CharClass, pat Pattern, s string, i int) (f int, l int)
- func Match(c CharClass, pat Pattern, s string) bool
- func ReplaceAll(c CharClass, pat Pattern, src, repl string) string
- func ReplaceWrite(w Writer, c CharClass, pat Pattern, s string, ...) error
- type CharClass
- func All() CharClass
- func Alnum() CharClass
- func Alphabet() CharClass
- func Blank() CharClass
- func C(set string) CharClass
- func Digit() CharClass
- func Lower() CharClass
- func Not(set string) CharClass
- func Range(lo, hi rune) CharClass
- func Space() CharClass
- func Upper() CharClass
- func Word() CharClass
- type Pattern
- type Writer
Constants ¶
This section is empty.
Variables ¶
var SkipAll = notifyb.Notify("skip all")
Functions ¶
func Equal ¶
Equal は s が pat と完全に一致するかを返します.
pat に Head, Tail を含む必要はありません.
部分一致を判定する場合は Match を使用します. Equal は次の記述と機能は同じですが Equal の方が高速に動作します.
Match(Dot(), Block(Head(), pat, Tail()), s)
func FindAllFunc ¶
FindAllFunc は s の中から pat と一致する部分を fn に渡します. fn が error を返すとそのエラーを返します.
func FindIndex ¶
FindIndex は s[i:] から pat に一致する範囲を返します. パターンに一致した文字列は s[f:l] です. 一致する部分がなければ -1, -1 を返します.
func ReplaceAll ¶
ReplaceAll は src の pat に一致する部分をすべて repl に置き換えます.
func ReplaceWrite ¶
func ReplaceWrite(w Writer, c CharClass, pat Pattern, s string, fn func(w Writer, m string) error) error
ReplaceWrite は Writer を使って文字列を置換します.
Writer を使用した文字列置換は頻繁なメモリアロケーションが発生せず柔軟に置換できるアプローチです. 置換後の文字列は Writer から取り出します.
コールバック関数はパターンに一致した文字列を受け取り, 対応する置換文字列を Writer に書き込みます. コールバック関数が SkipAll を返すと, 以降の置換をスキップします. それ以外の error を返された場合, ReplaceWrite はその error を返します.
Types ¶
type CharClass ¶
CharClass はキャラクタクラスを表します.
r が適合するかを判定する関数です.
type Pattern ¶
Pattern はマッチする文字列パターンを表します.
s[i:]の文字列が文字列パターンにマッチする関数です. マッチするとマッチした文字列の次の文字のインデックスを返します. マッチしなかった時は -1 を返します.
type Writer ¶
type Writer interface { io.Writer io.ByteWriter io.StringWriter }