正規表現

Python

改行文字を削る (rstripメソッドでも実現できる):

import re
r = re.sub("\n", "", r)

標準入力を読んで、特定のパターンにマッチする行だけを標準出力に出す。

import sys
import re
p = re.compile('^<W')  # starts with '<W'
if __name__ == '__main__':
    for line in sys.stdin:
        line = line.rstrip()
        if p.match(line):
            print line

または

import sys
import re
if __name__ == '__main__':
    for line in sys.stdin:
        line = line.rstrip()
        if re.match('^<W', line):
            print line

XMLの属性 WORD="xx" の中身を取り出す。行全体がマッチする正規表現を書かなくてはならない。

mo = re.match(r'.* WORD=\"(\S+)\".*', line)
if mo:
    word = mo.group(1)

数字の直後のMBをmegabyteに変換する:

>>> import re
>>> c = re.compile(u'(\d+)MB')
>>> c.sub(r"\1megabyte", "122.8MB")
'122.8megabyte'

Ruby

Ruby における正規表現のメモ。

# 最後の空白から行末まで
"hoge hoge hoge 2009 nishi".match(/(\S*)$/)[0]   #=> "nishi"
"hoge hoge hoge 2009 nishi ".match(/(\S*)$/)[0]  #=> ""

文字列.match の返り値(配列)の [0] はマッチした全体。[1] 以降は () で指定された箇所。

PHP

phpの正規表現命令は preg 系を使う。

ereg系は PHP 5.3 から非推奨になった。

$result に含まれる wiki 的な表記を a タグに変換する

// before: [[hoge:http://hoge.com]]
// after:  <a href="http://hoge.com">hoge</a>
$result = preg_replace("/\[\[(.+):\s*(http:.+)\]\]/", "<a href=\"$2\">$1</a>", $result);

$line の先頭に "* " があったら h2 タグに変換して $result に格納する

if (preg_match("/^\* (.+)/", $line, $matches)) {
  $result = "<h2>" . $matches[1] . "</h2>" . "\n";
}

改行を含む文字列 $body から " Token xxxxx " 形式の文字列を取り出す:

        $pattern = '/.* Token (\S+) .*/s';
        if (preg_match($pattern, $body, $matches)) {
            //var_dump($matches);
            $token = $matches[1];
            echo $token;
        }

regexp.txt · 最終更新: 2012/09/23 23:52 by Takuya Nishimoto
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0