以下のテストファイル名があります:
abc001_20111104_summary_123.txt
abc008_200700953_timeline.txt
abc008_20080402_summary200201573unitf.txt
123456.txt
100101-100102 test.txt
abc008_20110902_summary200110254.txt
abcd 200601141 summary.txt
abc008_summary_200502169_xyz.txt
各ファイル名から 番号を抽出する必要があります。
番号は6 桁、7 桁、9 桁、または 10 桁でなければなりません(つまり、 8 桁の数字を除く)。
複数が見つかった場合 は最初の番号を取得し、見つからない場合は空の文字列を取得します。
最初に 8 桁の数字を削除し、次にリストから 6 ~ 10 桁の数字を抽出するという2 段階のプロセスでこれを行うことができました。
step 1
regex: ([^0-9])([0-9]{8})([^0-9])
replacement: \1\3
step 2
regex: (.*?)([1-9]([0-9]{5,6}|[0-9]{8,9}))([^0-9].*)
replacement: \2
この 2 ステップのプロセスの後に得られる数値は、まさに私が探しているものです。
[]
[200700953]
[200201573]
[123456]
[100101]
[200110254]
[200601141]
[200502169]
ここで問題は、 これを 1 ステップのプロセスで行う方法はあるのかということです。
同様の質問に対するこの素晴らしい解決策を見てきましたが、複数見つかった場合は最新の番号が表示されます。
注: The Regex Coachでテストしています。