###前提・実現したいこと
Python2.7でRegexについて勉強中です。
"2003-03-03"や"2011-11-11"のように、西暦の下二桁と月、日が同じものにマッチさせ、取り出したいと思っています。
そこで、下記のコードを試しました。
Python
1import re 2 3pattern = r"\b((?:\d\d)(\d\d)-\2-\2)\b" 4text = """\ 51999-99-11 62017-12-17 72015-10-31 82011-11-11 9""" 10match = re.findall(pattern, text) 11 12if match: 13 print match 14else: 15 print "no match"
このままだと、非現実的な日付にもマッチしてしまいますが、練習なので、わかり易さ重視ということで。
###一応取り出せはしましたが…
[('2011-11-11', '11')]
と、マッチに用いた西暦の下二桁まで出力されてしまいます。
取り出したいのは"2011-11-11"のみです。
###マッチには用いるが、出力はされないようにしたい!
"(?:)"を用いた表現ではRegex内ですら参照できなくなってしまいます。
そこで、名前付きならどうだ!と、"(?P:<year>)"というような表現も試してみたのですがエラーでした。
Regex内では参照するが、出力はされないような表現ってないのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/21 12:58
2017/12/21 13:53