Perlの正規表現による文字列抽出をPythonでやりたい
下記のような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で書いたような抽出結果を再現することはできるのでしょうか。
お知恵をお貸し下さい。
よろしくお願いいたします。