私は1行のテキストファイルを持っています。このようなもの:A10102012MikeM。最初の文字はAまたはPのいずれかで、次の数字は日付に対応し、次の名前は性別(MまたはF)に対応します。この情報をMapに解析する最良の方法は何ですか?もちろん、私は各要素のstring.substring(x、y)を取ることができます。しかし、それはあまりにもハードコーディングされているようです。これは何とか正規表現で達成できますか?Javaでのテキストファイルの解析
2
A
答えて
6
は^(A|P)(\d+)(\w+?)(M|F)$
.Thisが動作します。この正規表現を試してみたが、いくつかの条件:
1)これは、日付の妥当性をチェックしません。
2)出力は、記載されているとおりに正確に記述する必要があります。
String str = "A10102012MikeM";
String p = "^([A|P])(\\d+)(\\w+?)(M|F)$";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(str);
if (matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}
出力=
10102012マイクM
1
はい、Javaは正規表現をサポートしています。あなたはjava.util.regex.Patternをチェックしたいと思うでしょう。正規表現のマッチからデータを抽出するMatcherグループに特に注意してください。
1
^(A|P)([0-9]){10}(.+)(M|F)$
- グループ1 ... AまたはP
- グループ2 ... 10桁の日付
- グループ3 ...名
- グループ4 ... MまたはF(性別)
1
^([AP])(\d+)([A-Za-z]+?)([MF])$
この正規表現は、(エスケープが行われていない)の異なる部分をキャッチデータをグループに分けて、簡単に入手できます。
1
正規表現の可能な代替は、あなたの正確な状況に応じて、SourceForgeのプロジェクトflatwormかもしれません。たとえば、テキストファイルを読み込んでJavaオブジェクトを読み込むことができます。
彼らは多くのユースケースを経験している良いfield guideを持っています。
関連する問題
- 1. テキストファイルの解析
- 2. Javaでテキストファイル全体を解析する
- 3. javaでテキストファイルを解析するには?
- 4. テキストファイルの文字列をjavaで文字列で解析する
- 5. テキストファイルの構文解析
- 6. 解析テキストファイルの列が
- 7. はRubyでテキストファイルを解析
- 8. Javaでテキストファイルを解析する際の問題
- 9. javascript/phpでのテキストファイルの解析?
- 10. 解析のJava
- 11. 大規模なテキストファイルをリアルタイムで解析する(Java)
- 12. Javaで単純なテキストファイルを解析する方法
- 13. XMLでのJavaの解析
- 14. Javaでのログファイルの解析
- 15. テキストファイルを解析する
- 16. テキストファイルの解析とCSVの生成
- 17. CSVへのテキストファイルの解析C#
- 18. テキストファイルの解析と名前の変更
- 19. R構造のテキストファイルの解析R
- 20. Javaでの構文解析
- 21. Javaでのバイトコード解析
- 22. Javaでテキストファイルを解析する - NullPointerExceptionを理解する助けが必要
- 23. 解析JSONのJava
- 24. Java JSONの解析
- 25. LISP If文 - テキストファイルの構文解析
- 26. 解析複数のHTML /テキストファイルは
- 27. 引用を含むテキストファイルの解析
- 28. 複数のテキストファイルを解析するVBA?
- 29. C#でテキストファイルを解析する方法
- 30. XERCESで解析中にテキストファイルの解析エラーを出力する方法
DDMMYYY(M | F)の形式を常に厳密に守っていますか? –
jbranchaud
はい、名前の長さは異なる場合があります – jyriand