ファイル名から月を取得したいが、数字のファイルがあると取得できない

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

ファイル名="あいうえお_202204.xlsx"
月名=System.Text.RegularExpressions.Regex.Match(ファイル名,“1?\d(?=\D)”).value + “月”

ファイル名="あいう20人_202204.xlsx"
月名=System.Text.RegularExpressions.Regex.Match(ファイル名,“1?\d(?=\D)”).value + “月”

①だと4月と取得できました。②だと〇月となりちゃんとした月名が取得できませんでした。
原因がお分かりになる方教えて頂けませんでしょうか?

こんにちは

\Dを使用しているから全角数字も対象に含まれるからです。このパターンを尊重するなら

“1?\d(?=[^0-9])”

だと通りますが、いずれにしても半角数字が含まれると正常に動作しないと思うので
あまりよくないと思います。

そのため例えば

System.Text.RegularExpressions.Regex.Match(System.IO.path.GetFileNameWithoutExtension(yourFilePath),"1?\d$").Value+"月"

等の方が良いかと思います。

1 Like

@Yoichi sama

お陰様で上手くいきました!
いつもありがとうございます。

1 Like

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