下記のようなPerlのコードと同じことをPythonでやりたくて調べています。

use utf8;
use feature 'unicode_strings';
use open ':encoding(utf8)';         # I/O default encoding is UTF-8
use open ':std';                    # stdio encoding = utf8
use Encode qw(encode_utf8 decode);

use strict;

my $regExp = qr/[\p{Han}\p{Katakana}a-zA-Z0-90-9%][\p{Han}\p{Katakana}a-zA-Z0-90-9%・ー]*/;
my $text = "三人行えば、必ずわが師あり";
my @matchedList = ();

for ($text) {
    s/($regExp)/ do{ push @matchedList,$1; ""; }; /ge;
}

print join( ",",@matchedList);

上記を実行すると、"三人行,必,師"という漢字だけを抽出した文字列を得ることができます。
これをPythonでもやりたいのですが、下記のようなコードを書いてみてもうまくいかず困っています。

# coding: utf-8
import re

regExp = r'[一-龥ァ-ンa-zA-Z0-90-9%][一-龥ァ-ンa-zA-Z0-90-9%・ー]*'
text = '三人行えば、必ずわが師あり'

if re.match(regExp, text):
    matched = re.findall(regExp, text)
    print ','.join(matched)

これでは漢字のみを抽出することができず、一文すべてを抽出してしまい結果が異なります。
re.searchなども試してみましたが同様でした。
PythonでもPerlで書いたような抽出結果を再現することはできるのでしょうか。
お知恵をお貸し下さい。
よろしくお願いいたします。