0

特定の文字列を正規表現でキャプチャしようとしていますが、最初の文字が失われています。

文字列は (06)12345678 です

私の正規表現は

r'\b\((0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}'

しかし、私が試合で得るのは

06)12345678

私は本当にそれが最初に欲しいです(また。

( および ) は、() がない場合があるため、条件付きです。しかし、単語の境界は、次のような数字を防ぐためにあります

hello123456789 

マッチング

regex = r'\b\(?(0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}'
matches = re.finditer(regex, '(06)12345678)')
for match in matches:
    print match.group(0)

何かご意見は?

-- 例 --

(06)12345678 should match, (06)12345678
06 12345678 should match, 06 12345678
1234567890 should match, 1234567890
=12345678 no match
4

1 に答える 1

2

first の前に 2 番目の "("、最初の 1 つではなく、最後の 2 つ目の ")" をエスケープしてみてください?

ライブデモ: http://refiddle.com/6bs

于 2012-09-20T12:51:03.290 に答える