2009-12-01から1ヶ月間の記事一覧

前回マッチした部分の続きからマッチさせる

前回マッチした部分の続きからマッチさせる 正規表現オブジェクトmatchに対して(match 'after)とすると,マッチした部分の続きが文字列として得られます. したがって, (#/regexp-spec/ (match 'after)) とすると,続きからマッチさせることができます. 何…

単語にマッチさせる

単語を含むかどうか調べる 通常であればそのまま書けば終わりです.が,"\b"を使って境界を明示することで,より正確にマッチさせることができます. (#/\bspec\b/ "Scheme spec") =>#<<regmatch> 0x5330a0> (#/\bspec\b/ "Scheme specification") =>#f 正規表現\wにマ</regmatch>…

正規表現が文字列の先頭・末尾にマッチするか調べる

正規表現が文字列の先頭・末尾にマッチするか調べる 正直,正規表現ネタなので言語はあんまり関係ないのですが... 先頭にマッチするか調べる "^"で先頭を表します."\A"はまだサポートされていないようです. マッチした際,明示的に#tを得たい場合にはboole…

文字列を検索する

文字列を検索する いわゆる正規表現によるマッチングです. #/regexp-spec/ とすることで,正規表現を表現することができます.他の言語上で正規表現を使ったことがあれば,違和感ないでしょう. パターンが含まれるかどうか 空白文字もしくはタブを検索する…

文字列の長さを得る

文字列の長さを得る 文字列の長さには2種類あります.文字数と内部エンコーディングの大きさです. この2つは一致することもあれば異なる場合もあるので,用途によって使い分けを. ; 文字数 (string-length string) ; 内部エンコーディングの大きさ (string…

文字列を反復する

文字を反復する 文字列を反復するには,文字の場合と文字列の場合でやり方が異なる. 文字の場合はmake-stringで反復できる. (make-string k &optional char) 使用例. charを指定しないと空白文字が繰り返される. (make-string 5 #\c) =>"ccccc" (make-st…

文字列を複製する

文字列を複製する そのまんま,string-copyで複製できます. (string-copy string &optional start end) 使用例. (string-copy "複製元の文字列") =>"複製元の文字列" (let* ((str "複製元の文字列") (copy-str (string-copy str))) `(,(eq? str str) ,(eq?…

文字コードを推測する

文字コードを推測する gauche.charconv gauche.charconvモジュールを使うと,ces-guess-from-stringで推測できる. (ces-guess-from-string string scheme) 使用例. 書式のschemeを"*JP"とすると,JIS,EUC,ShiftJIS,UTF-8のいずれかであるとして推測して…

文字コードを変換する

文字コードを変換する gauche.charconv gauche.charconvモジュールを使うと,ces-convertで変換できる. (ces-convert string from-code &optional to-code) 使用例. #*"〜"で結果が返されているけど,これはバイト文字列(不完全な文字列)を表している. (u…

適切な文字列リテラルをえらぶ

Scheme再会 とあるレシピブックをそのままScheme(というかGauche)で書いたらどうなるか試してみる.まずは文字列から. 文字列リテラル "〜" 普通の文字列.説明不要. "通常の文字列リテラル." => "通常の文字列リテラル." 改行をそのまま含めることがで…