Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Golang】正規表現を使って数字を取得したい

解決したいこと

Golangでタスク管理アプリを開発しています。
そこで、5:00:00の形式でポストされた時間をh,m,sでそれぞれ取得。タスクを開始した時間にh,m,sで取得した時刻を加算したいのですがh,m,sで取得することが難しく詰まっています。

こんな感じで勉強した時間を管理してまとめてくれるアプリです。
スクリーンショット 2022-09-12 13.24.47.jpg

右上の0:00:51の部分がポストされるので、その時刻のh,m,sを取得してtime.Date()で新しい時間を作成し、タスクに取り組んだ時間を計算できるようにしたいです。

自分で試したこと

自分ではこんな感じで正規表現を使ってやってみましたが、うまくできませんでした。

layout := regexp.MustCompile(`/^[0-9]{1,2}:[0-9]{2}:[0-9]{2}$/`)
fmt.Println(layout.FindAllStringSubmatch("3:05:00", -1))

基礎的な内容で申し訳ないのですが、ご教示のほどよろしくお願いいたします。

1

2Answer

結構お行儀の良い入力だと思いますので、文字列操作でいかがでしょうか?
https://pkg.go.dev/strings#Split
(もし正規表現で実現したい、という趣旨なのでしたら回答になっていませんのでお捨て置きください。)

2Like

Comments

  1. 完全に盲点でした笑
    一度文字列操作でチャレンジしてみます!ありがとうございます!

例(Example)を見ると、両端のバックスラッシュは不要みたいです。

- regexp.MustCompile(`/^[0-9]{1,2}:[0-9]{2}:[0-9]{2}$/`)
+ regexp.MustCompile(`^[0-9]{1,2}:[0-9]{2}:[0-9]{2}$`)
fmt.Println(layout.FindAllStringSubmatch("3:05:00", -1)) // [[3:05:00]]

2Like

Your answer might help someone💌