Java가 정규 표현식을 이용하여 데이터를 추출하는 방법

정규 표현식이 무엇입니까
정규 표현식은 패턴 일치와 교체에 사용할 수 있는 규범이다. 정규 표현식은 일반적인 문자 (예를 들어 문자 a에서 z) 와 특수 문자 (메타문자) 로 구성된 문자 모드로 문자 주체를 찾을 때 일치할 문자열을 설명하는 데 사용된다.정규 표현식은 검색된 문자열과 일치하는 문자 모드를 템플릿으로 합니다.
Java는 정규 표현식을 사용하여 데이터 추출
자바 정규 표현식의 용도는 매우 넓다. 이전에 큰 3M의 txt 텍스트를 여러 개의 작은 텍스트로 나누어 C#로 쓰면 간결하고 코드도 스물 몇 줄인데 오늘 자바로 썼는데 과연 자바는 수다스럽다.
파일을 나누는 코드는 붙이지 않고 정규 표현식으로 큰 문자열을 그룹화하는 방법을 붙입니다.
예를 들면, 지금endlist가 하나 있다.txt 텍스트 파일, 내용은 다음과 같습니다.

1300102, 
1300103, 
1300104, 
1300105, 
1300106, 
1300107, 
1300108, 
1300109, 
1300110, 
1300111, 
1300112, 
1300113, 
1300114, 
1300115, 
1300116, 
1300117, 
1300118, 
1300119, 
7자리 숫자는 휴대전화 번호의 앞자리를 대표하고, 뒤의 한자는 번호의 귀속지를 나타낸다.지금 이 내용을 130, 131, 132...시작은 각각 130까지 썼다.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";
  String 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]*\
)"); 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 (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
24줄은 정규 표현식 "(\d{3}) (\d{4}, [\u4e00-\u9fa5]*\)"의 각 () 의 내용을 그룹으로 하고 색인은 1부터 시작하며 0은 전체 표현식을 나타냅니다.그래서 이 표현식은 두 조로 나뉘는데 첫 번째 조는 3개의 숫자를 나타내고 두 번째 조는 4개의 숫자에 여러 개의 한자를 더하고 줄 바꾸기를 한다.추출 시 26-28행과 같습니다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기