質問編集履歴

1 タイトルをかえました

tapipi

tapipi score 13

2020/07/03 07:02  投稿

javaの正規表現についてご質問
### 前提・実現したいこと
以下のコードにある、
private static final String SEPARATOR = "(\\s+?|\\.|,|;)";
"(\\s+?|\\.|,|;)"が何を指しているのか理解できておりません。
今のところ、
「\s+」1つ以上のスペースの正規表現というのは検索できたのですが、
これ全体で何を指しているのかわかりません…(わかり次第追記はしていくつもりです)
### 該当のソースコード
```java
package practice.test20160812;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Accumulate {
   private static final String FILE_PATH = "resource\\RAMBLES_IN_FLORIDA_PART_1.txt";
   private static final String SEPARATOR = "(\\s+?|\\.|,|;)";
   public static void main(String[] args) {
       // 集計
       Map<String, Integer> map = new HashMap<>();
       try (FileReader fr = new FileReader(FILE_PATH);
               BufferedReader br = new BufferedReader(fr)){
           String line;
           while ((line = br.readLine()) != null) {
               String[] words = line.split(SEPARATOR);
               for (String word : words) {
                   if (!word.isEmpty()) {
                       if (map.containsKey(word)) {
                           int count = map.get(word) + 1;
                           map.put(word, count);
                       } else {
                           map.put(word, 1);
                       }
                   }
               }
           }
       } catch (FileNotFoundException e) {
           System.out.println("ファイルが見つかりませんでした。");
       } catch (IOException e) {
           System.out.println("読み取りに失敗しました。");
       }
       // 出現数で降順に並べ替え、つづりの長さ最大値取得
       List<String> list = new ArrayList<>();
       int maxLengthOfSpelling = 0;
       for (String key : map.keySet()) {
           list.add(key);
           if (maxLengthOfSpelling < key.length()) {
               maxLengthOfSpelling = key.length();
           }
       }
       Collections.sort(list, (o1, o2) -> {
           return - map.get(o1) + map.get(o2);
       });
       // 上位10件出力
       System.out.println("出現回数トップ10");
       String format = "%-" + maxLengthOfSpelling + "s: %3d";
       for (String word : list) {
           int count = map.get(word);
           if (10 <= count) {
               System.out.printf(format, word, count);
               System.out.println();
           }
       }
   }
}
```
  • Java

    21855 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • 正規表現

    1454 questions

    正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る