時刻の抽出について

いつも大変お世話になっております。

Excelで取得した文字列に時刻が含まれており、「午前9時」と分の表示がされていない場合と、「午前9時30分」と、分まで記載されている場合があります。
下記コードをベースにどちらの場合でも、時刻を抽出できるようにしたいのですが、どのようなコードにすべきでしょうか?

System.Text.RegularExpressions.Regex.Match(時刻,“(午前|午後)\d+?時”).Value

ご存知のことがあればご教授ください。

Hi @kiki1

System.Text.RegularExpressions.Regex.Match(Time,"(\d+\:?\d*\s*[A-Za-z.]*)").Value

Regards

1 Like

Hi @kiki1

Input= "9 a.m."
Output= DateTime.ParseExact(Input.Replace(".","").ToString,{"h tt","h:mm tt"}, System.Globalization.CultureInfo.InvariantCulture).ToString("HH:mm")

Input= "9:30 a.m."
Output=  DateTime.ParseExact(Input.Replace(".","").ToString,{"h tt","h:mm tt"}, System.Globalization.CultureInfo.InvariantCulture).ToString("HH:mm")

Hope it helps!!
Regards

1 Like

こんにちは

以下の式で双方とも抽出できます。

System.Text.RegularExpressions.Regex.Match(時刻,"(午前|午後)\d+時(\d+分)?").Value

ご回答ありがとうございます。
ちなみに「?」をつけることでどのような効果があるのでしょうか??

(\d+分)?の部分の?でしょうか?
この場合の?は量指定子で直前の要素の0または1つとマッチします。つまりかっこの中が一つあってもマッチしますし、なくてもマッチします。

ご丁寧にありがとうございます。
大変勉強になりました :relieved:

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.