タグ

reに関するblueleのブックマーク (4)

  • Pythonで辞書のキーに正規表現を使いたいという話 – taichino.com

    配列や連想配列をディスパッチテーブルとして利用していると、キーに正規表現を使いたくなる事があります。perlだと既にRegexp::Assembleというモジュールを使う方法が書かれていますが、僕はpythonで書きたい訳です。 アプローチは色々ありますが、僕はあくまでディスパッチテーブルとして利用したいので、dictクラスを継承してオレオレ辞書クラスを作ってみる事にしました。で、書いてみたのが以下になります。やたらと短くすんだのでちょっと感動しました。 #!/usr/bin/python # -*- coding: utf-8 -*- import re class regex_dict(dict): def __init__(self, items=None): for key, val in items.items(): self.__setitem__(key, val) def

  • [Python] sre.Scannerクラス - SumiTomohiko's blog

    環境 この記事の内容は、Ubuntu Linux 6.10, Python 2.4.4c1で確認しました。なお、Python 2.5ではsreモジュールにあったものはreモジュールに移っています。sreモジュールは互換性のために残っていますが、将来は削除される予定です。Python 2.5を使っている場合は、sreモジュールをreモジュールと読みかえてください。 概要 sreモジュールにはScannerクラスがあり、これを使えば簡単にスキャナを作成することができます。 例 例えば、以下のようなスタイスシートを解析しようとします。 foo { bar: baz; /* test */ } このとき、以下のようなコードを書きます。 try: # for Python 2.5 or later from re import Scanner except ImportError: # for Py

    [Python] sre.Scannerクラス - SumiTomohiko's blog
  • inforno :: Python:re.ScannerでS式パーサ

    Rubyの StringScanner は個人的にかなり好きなモジュールで、Rubyでちょっとしたパーサなどを書くときに重宝しています。 一方、Pythonにはexperimentalながら re.Scanner というクラスがあります( >= 2.4 )。experimentalなのでマニュアルにはのっていませんが。この re.Scanner はかなりシンプルなんですが典型的な StringScanner の使い方の範疇では、こちらのほうがキレイに書けるような気がします。 re.Scanner の使い方 使い方は非常に簡単で (regex, action) のリストを渡してScannerオブジェクトを作成 action は(scanner, string_matched) => stringな関数、Noneを返せば結果は無視される。 scanメソッドでスキャン。結果が配列で返ってくる と

  • 7.2. re — 正規表現操作 — Python 2.6.2 documentation

    7.2. re — 正規表現操作¶ このモジュールでは、 Perl で見られるものと同様な正規表現マッチング操作を提供しています。パターンと検索対象文字列の両方について、 8 ビット文字列と Unicode 文字列を同じように扱えます。 正規表現では、特殊な形式を表したり、特殊文字の持つ特別な意味を呼び出さずにその特殊な文字を使えるようにするために、バックスラッシュ文字 ('\') を使います。こうしたバックスラッシュの使い方は、 Python の文字列リテラルにおける同じバックスラッシュ文字と衝突を起こします。例えば、バックスラッシュ自体にマッチさせるには、パターン文字列として '\\\\' と書かなければなりません、というのも、正規表現は \\ でなければならず、さらに正規な Python 文字列リテラルでは各々のバックスラッシュを \\ と表現せねばならないからです。 正規表現パター

  • 1