- 「lisp文字列用の正規表現構文とユーザコマンド(replace-regexpなど)用の正規表現構文には重要な違いが存在します。」
- ああ、そうか。elispのreaderが読んだ後の文字列が正規表現であるように、'\'を配置するんだ。readerが読んだ結果を、次に渡すと。
- それとは違い、mini bufferからの入力はそのままを次に渡す、と。
- おお、^$とかを文脈、というのか。
- 。。。 いまいち、この本の説明わからん。。。そこで、infoのelispをみてみる。
- 正規表現には二種類のcharacterがある。ordinary charactersとspecial characters。
- Special charactersは次のとおり。
- どこでもspecial。
`.', `*', `+', `?', `[', `^', `$', and `\' - 条件によってspecial。
`]', `-', `[:', `:]'
- どこでもspecial。
- [ ... ] は a character alternativeである。
- character alternativeの中では、先のspecialはspecialでなくなる。ordinaryになる。character alternativeの中でspecialなのは、
`]', `-', '^'
である。 - character alternativeの中で、specialになっている文字をordinaryとしてcharacter alternativeに含める方法は次のとおり。
`]' : 先頭に置く : 例 `[]a]'
`-' : 先頭か末尾に置く : 例 `[-a]' `[a-]'
`^' : 先頭以外に置く : 例 `[a^]' - `\'には2つの機能がある。ひとつはここまでに紹介したspecial character(character alternativeの中のものは除く)をエスケープすること。もうひとつは、ここまでに紹介した以外のspecial characterを表現すること。
- `\'との連続によってspecialになるのは次のもの。
- 文字に関するもの
`\|' `\{M\}' `\{M,N\}' `\( ... \)' `\(?: ... \)' `\DIGIT' `\w' `\W' `\sCODE' `\SCODE' `\cC' `\CC' - 文脈に関するもの
`\`' `\'' `\=' `\b' `\B' `\<' `\>' `\_<' `\_>'
- 文字に関するもの
- elispのread syntaxでは、文字列の構文において、`\'に特別な意味を与えている。直後の文字をエスケープする、という意味だ。よって、正規表現をelispの文字列で表すときには、正規表現の中の`\'を`\'でエスケープしなければならない。
- 正規表現には二種類のcharacterがある。ordinary charactersとspecial characters。
- おお、infoの方が本よりわかりやすい。
- 本がわかりにくいのは、「演算子\\<」とか、書くから。「演算子\<」と書いてくれればよくて、それを正規表現文字列にするときに、"\\<"とかしてくれればよい。
明日は「11.3.3 標準ライブラリは宝の山」から。
0 件のコメント:
コメントを投稿