正規表現とは何ですか
正規表現は、パターンマッチングと交換に使用できる仕様です。正規表現は、普通の文字(文字AからZなど)と特殊文字(メタカラクター)で構成される文字通りのパターンです。文字通りのボディを検索するときに一致する1つ以上の文字列を説明するために使用されます。正規表現は、検索された文字列と文字パターンを一致させるテンプレートとして機能します。
Javaは正規表現を使用してデータを抽出します
Javaの正規表現は非常に便利です。以前は、大きな3M TXTテキストを複数の小さなテキストに分割していました。 C#で書かれた単語は非常に簡潔で、コードは約20行にすぎません。今日はJavaで書きました。案の定、Javaは非常に冗長です。
ファイルを分割するコードを投稿しません。主に、正規表現を使用して大きな文字列をグループ化する方法を投稿します。
たとえば、次のコンテンツを備えたEndList.txtテキストファイルがあります。
1300102、北京1300103、北京1300104、北京1300105、北京1300106、北京1300107、北京1300108、北京1300109、北京1300110、北京1300111、Beijing 1300113、Beijing 1300113、Beijing 1300115、北京1300116、北京1300117、北京1300118、北京1300119、北京
7桁の数字は、携帯電話番号の最初の7桁を表し、その背後にある漢字は所有権の場所を示しています。今、私はこれらのコンテンツをこれらのファイルにそれぞれ130 131 132 ... txt 131.txt 132.txtとして書き込みたいと思います.......
public static void main(string args []){file file = null; BufferedReader Br = null; StringBuffer Buffer = null; String ChildPath = "src/endlist.txt";文字列data = ""; try {file = new file(ChildPath); buffer = new StringBuffer(); inputStreamReader ISR = new inputStreamReader(new FileInputStream(file)、 "utf-8"); BR = new BufferedReader(ISR); int s; while((s = br.read())!= -1){buffer.append((char)s); } data = buffer.toString(); } catch(Exception e){e.printstacktrace(); } map <string、arraylist <string >> resultmap = new hashmap <string、arraylist <string >>(); for(int i = 0; i <10; i ++){resultmap.put( "13"+i、new arraylist <string>()); } pattern pattern = pattern.compile( "(// d {3})(// d {4}、[/u4e00-/u9fa5]*// n)"); matcher matcher = pattern.matcher(data); while(matcher.find()){resultmap.get(matcher.group(1))。add(matcher.group(2)); } for(int i = 0; i <10; i ++){if(resultmap.get( "13" + i).size()> 0){try {file outfile = new file( "src/13" + i + ".txt"); fileoutputStream outputStream = new FileOutputStream(Outfile); outputStreamWriter writer = new outputStreamWriter(outputStream、 "utf-8"); arrayList <string> templist = resultMap.get( "13" + i); for(int j = 0; j <templist.size(); j ++){writer.append(resultmap.get( "13"+i).get(j)); } writer.close(); outputStream.close(); } catch(例外e){// todo auto-enerated catch block e.printstacktrace(); }}}}行24では、正規表現 "(// d {3})(// d {4}、[/u4e00-/u9fa5]*// n)を使用します。"各()の内容はグループであり、インデックスは1から始まり、0は式全体を表します。したがって、この式は2つのグループに分けられます。最初のグループは3つの数字を表し、2番目のグループは4つの数字に加えて複数の漢字と新しいライン文字を表します。抽出は26-28行に示されています。
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。