이 기사에서는 괄호 안에 컨텐츠를 정기적으로 추출하는 Java의 작동에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
한 번은 작업에서 문제가 발생했는데, 이는 각 브래킷의 내용을 문자열로 추출해야했습니다. 온라인으로 검색 한 결과 정규 표현이 괄호 안에 내용을 추출하는 데 사용될 수 있음을 발견했습니다. 특정 구현은 다음과 같습니다.
import java.util.arraylist; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; public class extratic void main (string) {string msg = "performancemanager [1st Bracket] 제품 [2nd bracket] <[3rd Bracket]; List <string> list = extractMessageByregular (msg); for (int i = 0; i <list.size (); i ++) {system.out.println (i+"->"+list.get (i)); }} / ** * 정규 표현식을 사용하여 괄호 안에 내용을 추출하십시오 * @param msg * @return * / public static list <string> extrastmessageByregular (string msg) {list <string> list = new arraylist <string> (); 패턴 p = pattern.compile ( "(// [[^//]]*//]); 매치 자 m = p.matcher (MSG); while (m.find ()) {list.add (m.group (). substring (1, m.group (). length () -1)); } 반환 목록; }}출력 결과는 다음과 같습니다.
0-> 첫 번째 브래킷
1-> 두 번째 괄호
2-> 세 번째 브래킷
이것은 코드 작업이 빨리 완료되었지만 나중에 괄호에 여전히 괄호가 포함되어 있으면 정규 표현식이 그 효과를 잃게된다는 것을 알았습니다. 나는 그것을 직접 해결할 방법을 찾아야했다. 연구 후 마침내 해결책을 찾았습니다. 특정 구현은 다음과 같습니다.
package com.perry.test; import java.util.arraylist; import java.util.list; import java.util.regex.matcher; import java.util.regex.pattern; public static void main (String [] args) {string msg = "performancemanager [1st Bracket] 제품 [1st Bracket] 제품 브래킷은 브래킷을 포함합니다]]] <[3 번째 브래킷] 79 ~ "; List <string> list = extractMessage (MSG); for (int i = 0; i <list.size (); i ++) {system.out.println (i+"->"+list.get (i)); }} / ** * 괄호 안의 내용을 추출하고 브래킷의 괄호를 무시하고 * @param msg * @return * / public static list <string> extratmessage (string <string> list = new arraylist <string> (); int start = 0; int startflag = 0; int endflag = 0; for (int i = 0; i <msg.length (); i ++) {if (msg.charat (i) == '[') {startflag ++; if (startflag == endflag + 1) {start = i; }} else if (msg.charat (i) == ']) {endflag ++; if (endflag == startflag) {list.add (msg.substring (start + 1, i)); }}} 리턴 목록; }}출력 결과는 다음과 같습니다.
0-> 첫 번째 브래킷
1-> 두 번째 괄호 [브래킷에는 브래킷이 들어 있습니다]
2-> 세 번째 브래킷
주요 아이디어는 끈을 가로 지르고 괄호의 시작 및 끝 위치를 표시하는 것입니다. 브래킷의 시작 위치에 해당하는 종료 위치 인 경우 시작 위치의 수와 종료 위치는 동일하므로 전체 브래킷의 내용이 가로 릅니다.
추신 : 참조를위한 매우 편리한 정규 표현 도구는 다음과 같습니다.
자바 스크립트 정규 표현 온라인 테스트 도구 :
http://tools.vevb.com/regex/javaScript
정규 표현 온라인 세대 도구 :
http://tools.vevb.com/regex/create_reg
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 정규 표현 기술", "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Skills", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.