こどくなひびのできごと

2005|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|
2012|11|

2006-12-15 [長年日記]

_ elisp と正規表現

mew の folder 推測ルールを書いていたら、elisp で正規表現ってエラいめんどくさい事にきづかされた。要は "^(ML_NAME " とか "^[ML_NAME " みたいな Subject に match させたかっただけなんだけど・・・

まず、elisp で正規表現を書く場合、メタキャラクタをエスケープしようとすると、lisp による評価と正規表現による評価を両方エスケープさせる必要があるのね。要は shell のコマンドラインでエスケープするイメージ。

例えば "\" を正規表現内で使おうとすると "\\" ではなく "\\\\" でようやくその意味をなすというか。んで、"^[ML_NAME " は "^\\[ML_NAME" になるわけです。

んで、その調子で "^\\(ML_NAME " ってかいたらなんかエラー。どうやら、sed の置換要の "\( \)" みたいな部分 match + 切り出しの構文があるらしく、そっちに match して "\)" がないといっているらしい・・・どうやら "()" は lisp 的にはメタキャラクタだが、lisp の正規表現的にはメタキャラクタではなく、"\(" はメタ文字列、と。

ややこしいなおい。

本日のツッコミ(全2件) [ツッコミを入れる]
_ ササヤン (2006-12-16 15:52)

正規表現って書いている時はドキドキ<br>上手にできたらちょースッキリ。<br>でも上手くできないと、ストレス溜まりまくり。<br><br>案外好きです正規表現でかたづけること..。

_ takasima (2006-12-16 17:37)

後ろから前から置換、正規表現で気持ちイイ!<br>ってヤツですか。:)