[Python]re.matchで正規表現式に特殊文字を使うサンプル

書式
特殊文字
1).(ドット) デフォルトのモードでは改行以外の任意の文字にマッチします。
2)* 直前の正規表現を 0 回以上、できるだけ多く繰り返したものにマッチさせる結果の正規表現にします
3)? 直前の正規表現を 0 回か 1 回繰り返したものにマッチさせる結果の正規表現にします。
4)*?, +?, ??
'*’ 、 '+’ 、および '?’ 修飾子は全て 貪欲 (greedy) マッチで、できるだけ多くのテキストにマッチします。

使用例

#!/usr/bin/python3
import re
 
line = "Cats are smarter than dogs"
# .* 直前の正規表現を 0 回以上、できるだけ多く繰り返したものにマッチ
# (.*?)  非貪欲 (non-greedy) あるいは 最小 (minimal) のマッチが行われ
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
 
if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("マッチしない!")

実行結果

matchObj.group() : Cats are smarter than dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarter

 

Python

Posted by arkgame