質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

3183閲覧

Pythonで正規表現を使って、日付の表示形式を変更したい

sont

総合スコア35

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/03 02:17

編集2020/08/03 04:31

Pythonを利用しています。

2019/10/1 2020/11/13 2020/6/1 2020/7/25

このような日付表示に対して、正規表現を利用して以下のような表示形式に置換処理をしたいです。

2019-10-01 2020-11-13 2020-06-01 2020-07-25

どのような正規表現をすれば良いでしょうか?
言語はPythonです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/03 02:51

言語を指定してください
sont

2020/08/03 02:52

ありがとうございます。 言語はPythonを利用しております。
miyabi_takatsuk

2020/08/03 03:31

タイトルだけでなく、質問タグにPythonを追加した方が、より回答得られやすくなると思います。
guest

回答4

0

ベストアンサー

正規表現は「マッチ」の機能しか無いので、置換はプログラミング言語ないしエディタなどのツールの機能で実現します。

1桁を0を補って2桁にする処理が要るので、
案1:1桁か2桁かに対応した4パターンの置換を書く
案2:単純な置換じゃなく置換後の部分にコードを書ける言語を使う

一番良いのは、他の回答にある通り、日付として日付ライブラリで処理することです。

投稿2020/08/03 05:35

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

pythonは専門外なので考え方だけ
^(\d{4}/)(\d+)(/)(\d+)$
でマッチさせて、2番目の要素と4番目の要素の先頭に"0"をつけて、右から2文字とりだしてください

投稿2020/08/03 03:13

編集2020/08/03 03:14
yambejp

総合スコア116734

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/03 03:15

jsサンプル var a=["2019/10/1","2020/11/13","2020/6/1","2020/7/25","test"]; var reg=new RegExp("^(\d{4}/)(\d+)(/)(\d+)$"); var b=a.map(x=>{ var m=x.match(reg); return x.replace(reg,(y)=>m[1]+("0"+m[2]).slice(-2)+m[3]+("0"+m[4]).slice(-2)); }); console.log(b);
guest

0

正規表現を利用して以下のような表示形式に置換処理をしたいです。

正規表現は、置換処理を行うものではないです。
*言語やエディタによって、「正規表現を使用した検索結果を置換する」といった機能を提供するものはあります。

で本件ですが、正規表現ではなく、言語によって用意された日付処理系の仕組みを使用して、表現を変更することをオススメします。

投稿2020/08/03 02:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

te2jiさんの言う通り、明確に日付形式とわかっているならそちらを利用する方が無難です。

python

1from datetime import datetime as dt 2 3l_input = [ 4 '2019/10/1', 5 '2020/11/13', 6 '2020/6/1', 7 '2020/7/25', 8 ] 9 10# 日付型に変換 11l_datetime = [dt.strptime(l, '%Y/%m/%d') for l in l_input] 12# 'Y-m-d'のフォーマット文字列に変換 13l_result = [dt.strftime(l, '%Y-%m-%d') for l in l_datetime] 14 15print(l_result)

投稿2020/08/03 03:13

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問