ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# coding: Shift_JIS import re # 正規表現を扱うモジュールのインポート # 正規表現のチェックプリント用の関数 def PrintRegMatch(pat, txt): # 書式: re.match(パターン, テキスト) m = re.match(pat, txt) # パターンにマッチしなかった場合はNoneを返す if m != None: print 'パターン"%s"はテキスト"%s"にマッチ「する」' % (pat, txt) else: print 'パターン"%s"はテキスト"%s"にマッチ「しない」' % (pat, txt) txt = 'ABCDEFGH' # 探索される文字列をテキスト # 探索する 文字列をパターン # 「*」: 直前の文字の0回以上の繰り返しにマッチ PrintRegMatch('.*CDE', txt) PrintRegMatch('A.*H', txt) PrintRegMatch('A*BC', txt) PrintRegMatch('A.*BC', txt) PrintRegMatch('A*', '') print # 「+」: 直前の文字の1回以上の繰り返しにマッチ PrintRegMatch('.+DEF', txt) PrintRegMatch('A.+H', txt) PrintRegMatch('A+BC', txt) PrintRegMatch('A.+BC', txt) PrintRegMatch('A+', '') print # 「?」: 直前の文字の0or1回の繰り返しにマッチ PrintRegMatch('^A?.+$', txt) PrintRegMatch('^B?$', '') PrintRegMatch('^C?E', 'E') PrintRegMatch('A.?H', txt) PrintRegMatch('BBB?C', 'BBC') |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
パターン".*CDE"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A.*H"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A*BC"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A.*BC"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A*"はテキスト""にマッチ「する」 パターン".+DEF"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A.+H"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A+BC"はテキスト"ABCDEFGH"にマッチ「する」 パターン"A.+BC"はテキスト"ABCDEFGH"にマッチ「しない」 パターン"A+"はテキスト""にマッチ「しない」 パターン"^A?.+$"はテキスト"ABCDEFGH"にマッチ「する」 パターン"^B?$"はテキスト""にマッチ「する」 パターン"^C?E"はテキスト"E"にマッチ「する」 パターン"A.?H"はテキスト"ABCDEFGH"にマッチ「しない」 パターン"BBB?C"はテキスト"BBC"にマッチ「する」 |