정규 표현이란 무엇입니까?
정규 표현식은 패턴 일치 및 교체에 사용할 수있는 사양입니다. 정규 표현식은 일반적인 캐릭터 (예 : 문자 A에서 Z) 및 특수 문자 (Metacharacters)로 구성된 문자 패턴입니다. 그것은 문자의 몸을 검색 할 때 일치 할 하나 이상의 현을 설명하는 데 사용됩니다. 정규 표현식은 검색 된 문자열과 문자 패턴을 일치시키는 템플릿 역할을합니다.
Java는 정규식을 사용하여 데이터를 추출합니다
Java 정규식은 매우 유용합니다. 전에는 큰 3m TXT 텍스트를 여러 개의 작은 텍스트로 나누었습니다. C#로 작성된 단어는 매우 간결하며 코드는 약 20 줄입니다. 나는 오늘 자바로 썼다. 물론, Java는 매우 말이 많습니다.
파일을 분할하기 위해 코드를 게시하지 않습니다. 나는 주로 일반 표현식을 사용하여 큰 문자열을 그룹화하는 방법을 게시 할 것입니다.
예를 들어, 이제 다음 내용이있는 EndList.txt 텍스트 파일이 있습니다.
1300102, 베이징 1300103, 베이징 1300104, 베이징 1300105, 베이징 1300106, 베이징 1300108, 베이징 1300109, 베이징 1300110, 베이징 1300111, 베이징 1300112, 베이징 1300113, 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 버퍼 = null; 문자열 childpath = "src/endlist.txt"; 문자열 data = ""; try {file = 새 파일 (childpath); 버퍼 = 새 StringBuffer (); inputStreamReader isr = new inputStreamReader (new FileInputStream (파일), "UTF-8"); br = 새로운 버퍼드 리더 (ISR); int s; while ((s = br.read ())! = -1) {buffer.append ((char) s); } data = buffer.toString (); } catch (예외 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)"); 매치기 매치 자 = Pattern.Matcher (데이터); 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 = 새 파일 ( "src/13" + i + ".txt"); fileoutputStream outputStream = 새 FileOutputStream (Outfile); OutputStreamWriter Writer = New OutputStreamWriter (OutputStream, "UTF-8"); ArrayList <string> emplist = resultmap.get ( "13" + i); for (int j = 0; } writer.close (); outputStream.close (); } catch (예외 e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}}}라인 24는 정규식을 사용합니다 "(// d {3}) (// d {4}, [/u4e00-/u9fa5]*// n)"각 ()의 내용은 그룹이고, 인덱스는 1에서 시작하고 0은 전체 표현식을 나타냅니다. 따라서이 표현은 두 그룹으로 나뉩니다. 첫 번째 그룹은 3 개의 숫자를 나타내고, 두 번째 그룹은 4 개의 숫자와 여러 중국어와 Newline 캐릭터를 나타냅니다. 추출은 26-28 행에 표시됩니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용이 귀하의 연구 나 업무에 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.