文字列を生の文字列としてエンコードしたにもかかわらず、テスト入力文字列の1つにエスケープ文字のように扱われるバックスラッシュがあるため、失敗するpythondoctestの関数があります。
私のdoctestは次のようになります:
>>> infile = [ "Todo: fix me", "/** todo: fix", "* me", "*/", r"""//\todo stuff to fix""", "TODO fix me too", "toDo bug 4663" ]
>>> find_todos( infile )
['fix me', 'fix', 'stuff to fix', 'fix me too', 'bug 4663']
また、todo仕様のバリエーションに続いて、1行からtodoテキストを抽出することを目的とした関数は、次のようになります。
todos = list()
for line in infile:
print line
if todo_match_obj.search( line ):
todos.append( todo_match_obj.search( line ).group( 'todo' ) )
そして、と呼ばれる正規表現は次のtodo_match_obj
とおりです。
r"""(?:/{0,2}\**\s?todo):?\s*(?P<todo>.+)"""
私のipythonシェルとの簡単な会話は私に与えます:
In [35]: print "//\todo"
// odo
In [36]: print r"""//\todo"""
//\todo
そして、doctestの実装がstdoutを使用する場合に備えて(私はチェックしていません、申し訳ありません):
In [37]: sys.stdout.write( r"""//\todo""" )
//\todo
私の正規表現-fooはどの基準でも高くはなく、ここで何かが欠けている可能性があることに気づきました。
編集:Alex Martellisの回答に続いて、どの正規表現が実際に爆破されたものと一致するかについての提案が必要r"""//\todo fix me"""
です。私はもともと宿題をするように誰かに頼んだのではないことを知っています、そしてそれが私の質問に本当に答えたので(または私の恐れを確認したので)私はアレックスの答えを受け入れます。しかし、私はここで私の問題に対する良い解決策に賛成することを約束します:)
編集編集:参考までに、kodosプロジェクトにバグが報告されています:バグ#437633
Python 2.6.4を使用しています(r264:75706、2009年12月7日、18:45:15)
ここまで読んでいただきありがとうございます(ここを直接スキップした場合は、理解できます)