正規表現

むむむ。。

str1 = u"あ\nいうえお"
str2 = u"あ\n"
if re.match(str2,str1):
    print "match!"
else:
    print "not match!"

これはちゃんとmatch!
しかし、

str1 = ur"あ\nいうえお"
str2 = ur"あ\n"
if re.match(str2,str1):
    print "match!"
else:
    print "not match!"

はnot match!になる。

さらにさらに

str1 = u"あ\nいうえお"
str2 = ur"あ\n"

はmatch,

str1 = ur"あ\nいうえお"
str2 = u"あ\n"

はnot match

原因究明中。これ理解したら家帰ろうっと。


追記 同日21:26

あんまりしっくりとした解釈までたどり着かなかったので、とりあえず以下のように今日は雑にまとめ。

正規表現のための文字列ではエスケープやメタ文字関係がごちゃっとするのでrをつけてrawで。マッチを探す方の文字列はごくごく普通に、rawを付けない。ruby正規表現使ってたときはこういうことで頭をひねった記憶が無いんだけどなぁ。。まあいっか。