자바 정규 표현 식 기초,인 스 턴 스 학습 자료 수집 대전<br>오리지널

12766 단어 정규 표현 식
JAVA 의 Pattern 류 와 Matcher 류 는 인터넷 주 소 를 참고 할 수 있 습 니 다http://www.ibm.com/developerworks/cn/java/l-regp/part2/
정규 표현 식 의 특수 문자:
  \\ 백 슬 래 쉬
  \t 간격('\u0009')
  줄 바 꾸 기('\u000A')
  \r Enter('\\u000D')
  \d 숫자 등가[0-9]
  \D 비 숫자 등가[^0-9]
  \s 공백 기호[\t\x0B\f\r]
  \S 비 공백 기호[^\t\x0B\f\r]
  \w 단독 문자[a-zA-Z0-9]
  \W 비 단독 문자[^a-zA-Z0-9]
  \f 페이지 바 꾸 기
  \e Escape
  \b 한 단어의 경계
  \B 단어 가 아 닌 경계
  \G 이전 일치 하 는 끝
 
  ^시작 제한^자바 조건 은 자바 로 시작 문자 로 제한 합 니 다.
  $끝 을 제한 하기 위해 자바$조건 을 자바 로 끝 문자 로 제한 합 니 다.
  .임의의 문 자 를 제한 하기 위해 자바..조건 은 자바 로 제한 한 후 줄 을 바 꾸 는 것 을 제외 하고 임의의 두 문자 로 특정 제한 조건 을 추가 합 니 다.
 
  [a-z]조건 은 소문 자 a to z 범위 의 한 문자 로 제 한 됩 니 다.
  [A-Z]조건 은 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
  [a-zA-Z]조건 은 소문 자 a to z 또는 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
  [0-9]조건 은 소문 자 0 to 9 범위 에서 한 글자 로 제 한 됩 니 다.
  [0-9a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 에서 한 글자 로 제한 합 니 다.
  [0-9[a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 에서 한 글자 로 제한 합 니 다(교 집합)
 
  []가입 후 재 제한 조건 추가
  [^a-z]조건 은 비 소문 자 a to z 범위 에서 한 글자 로 제 한 됩 니 다.
  [^A-Z]조건 은 대문자 가 아 닌 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
  [^a-zA-Z]조건 은 비 소문 자 a to z 또는 대문자 A to Z 범위 에서 한 글자 로 제 한 됩 니 다.
  [^0-9]조건 은 소문 자가 아 닌 0 to 9 범위 에서 한 글자 로 제 한 됩 니 다.
  [^0-9a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 의 한 글자 로 제한 합 니 다.
  [^0-9[a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 에서 한 글자 로 제한 합 니 다(교 집합).
  특정 문자 가 0 회 이상 나타 날 때'*'를 사용 할 수 있 습 니 다.
  J*0 개 이상 J
  .* 0 개 이상 임 의 문자
  J.*D J 와 D 사이 에 0 개 이상 의 임의의 문자
  특정 문자 가 1 회 이상 나타 날 때'+'를 사용 할 수 있 습 니 다.
  J+1 개 이상 J
  .+ 임 의 문자 1 개 이상
  J.+D J 와 D 사이 의 임의의 문자 1 개 이상
  제한 조건 이 특정 문자 가 0 번 또는 1 번 이상 나타 날 때'?'를 사용 할 수 있 습 니 다.
  JA? J 나 JA.
  지정 한 횟수 문자 연속 출현 제한'{a}'
  J{2} JJ
  J{3} JJJ
  텍스트 a 개 이상,그리고{a,}
  J{3,} JJJ,JJJJ,JJJJJ,???(세 번 이상 J 병존)
  텍스트 a 개 이상,b 개 이하{a,b}
  J{3,5}JJJ 또는 JJJ 또는 JJJJJ
  둘 중 하 나 를 취하 다.
  J|A J 또는 A
  Java|Hello Java 또는 Hello
  「()」예 를 들 어,나 는index에서간 의 데 이 터 를 조회 하여(.+?)
Pattern.copile 함 수 를 사용 할 때 정규 표현 식 의 일치 행 위 를 제어 하 는 인 자 를 추가 할 수 있 습 니 다.
  Pattern Pattern.copile(String regex,int flag)flag 의 수치 범 위 는 다음 과 같 습 니 다.
Pattern.CANON_EQ 는 두 글자 의'정규 분해(canonical decomposition)'가 똑 같은 경우 에 만 일치 하 는 것 으로 인정 합 니 다.예 를 들 어 이 플래그 를 사용 하면 표현 식'a\u030A'가 일치 합 니까?'기본적으로'규범 상등 성(canonical equivalence)'은 고려 하지 않 는 다.
  Pattern.CASE_INSENSITIVE(?i)기본적으로 대소 문자 불분명 감 의 일치 성 은 US-ASCI 문자 집합 에 만 적 용 됩 니 다.이 표 지 는 표현 식 이 대소 문 자 를 무시 하고 일치 하도록 할 수 있 습 니 다.유 니 코드 문자 의 크기 를 알 수 없 는 일치 시 키 려 면 유 니 코드CASE 는 이 로고 와 합치 면 됩 니 다.
  Pattern.COMMENTS(?x)이 모드 에서 일치 할 때 빈 칸 문 자 를 무시 합 니 다.설명 은 이 줄 이 끝 날 때 까지\#부터 시작 합 니 다.끼 워 넣 은 플래그 를 통 해 유 닉 스 줄 모드 를 사용 할 수 있 습 니 다.
  Pattern.DOTALL(?s)이 모드 에서 표현 식''은 한 줄 을 나타 내 는 끝 자 를 포함 하여 임의의 문자 와 일치 할 수 있 습 니 다.기본적으로 표현 식''은 줄 의 끝 문자 와 일치 하지 않 습 니 다.
  Pattern.MULTILINE (?m)이 모드 에서'^'와'$'는 각각 한 줄 의 시작 과 끝 에 일치 합 니 다.또한'^'는 문자열 의 시작 과 일치 합 니 다.'$'도 문자열 의 끝 과 일치 합 니 다.기본적으로 이 두 표현 식 은 문자열 의 시작 과 끝 만 일치 합 니 다.
  Pattern.UNICODE_CASE (?u)이 모드 에서 CASE 를 사용 했다 면INSENSITIVE 플래그 는 유 니 코드 문 자 를 대소 문자 로 일치 시 킵 니 다.기본적으로 대소 문자 가 민감 하지 않 은 매 칭 은 US-ASCI 문자 집합 에 만 적 용 됩 니 다.
Pattern.UNIX_LINES(?d)이 모드 에서''만 한 줄 의 중지 로 인식 되 고','^','$'와 일치 합 니 다.공허 한 개념 을 버 리 고 아래 에 몇 가지 간단 한 자바 정규 용례 를 쓰 겠 습 니 다.
◆문자열 에 인증 을 포함 할 때
//자바 로 시작 하여 임의로 끝 나 는 문자열 찾기
  Pattern pattern = Pattern.compile("^Java.*");
  Matcher matcher=pattern.matcher("Java 는 사람 이 아니다");
  boolean b = matcher.matches(); //조건 이 만족 하면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.
  System.out.println(b);
정규 표현 식 의 특수 문자:
  \\ 백 슬 래 쉬
  \t 간격('\u0009')
  줄 바 꾸 기('\u000A')
  \r Enter('\\u000D')
  \d 숫자 등가[0-9]
  \D 비 숫자 등가[^0-9]
  \s 공백 기호[\t\x0B\f\r]
  \S 비 공백 기호[^\t\x0B\f\r]
  \w 단독 문자[a-zA-Z0-9]
  \W 비 단독 문자[^a-zA-Z0-9]
  \f 페이지 바 꾸 기
  \e Escape
  \b 한 단어의 경계
  \B 단어 가 아 닌 경계
  \G 이전 일치 하 는 끝
 
  ^시작 제한^자바 조건 은 자바 로 시작 문자 로 제한 합 니 다.
  $끝 을 제한 하기 위해 자바$조건 을 자바 로 끝 문자 로 제한 합 니 다.
  .임의의 문 자 를 제한 하기 위해 자바..조건 은 자바 로 제한 한 후 줄 을 바 꾸 는 것 을 제외 하고 임의의 두 문자 로 특정 제한 조건 을 추가 합 니 다.
 
  [a-z]조건 은 소문 자 a to z 범위 의 한 문자 로 제 한 됩 니 다.
  [A-Z]조건 은 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
  [a-zA-Z]조건 은 소문 자 a to z 또는 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
  [0-9]조건 은 소문 자 0 to 9 범위 에서 한 글자 로 제 한 됩 니 다.
  [0-9a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 에서 한 글자 로 제한 합 니 다.
  [0-9[a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 에서 한 글자 로 제한 합 니 다(교 집합)
 
[]에 가입^후 재 제한 조건 추가
[^a-z]조건 은 비 소문 자 a to z 범위 에서 한 글자 로 제 한 됩 니 다.
[^A-Z]조건 은 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
[^a-zA-Z]조건 은 소문 자 a to z 또는 대문자 A to Z 범위 의 한 글자 로 제 한 됩 니 다.
[^0-9]조건 은 비 소문 자 0 to 9 범위 에서 한 글자 로 제 한 됩 니 다.
[^0-9a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 의 한 글자 로 제 한 됩 니 다.
[^0-9[a-z]조건 은 소문 자 0 to 9 또는 a to z 범위 의 한 글자 로 제한 합 니 다(교 집합).
특정 문자 가 0 회 이상 나타 날 때'*'를 사용 할 수 있 습 니 다.
J*0 개 이상 J
.*0 개 이상 의 임의의 문자
J.*D J 와 D 사이 에 0 개 이상 의 임의의 문자
특정 문자 가 1 회 이상 나타 날 때'+'를 사용 할 수 있 습 니 다.
J+1 개 이상 J
.+1 개 이상 의 임의의 문자
J.+D J 와 D 사이 의 임의의 문자 1 개 이상
제한 조건 이 특정 문자 가 0 번 또는 1 번 이상 나타 날 때'?'를 사용 할 수 있 습 니 다.
JA? J 나 JA.
지정 한 횟수 문자 연속 출현 제한'{a}'
J{2} JJ
J{3} JJJ
텍스트 a 개 이상,그리고{a,}
J{3,} JJJ,JJJJ,JJJJJ,???(세 번 이상 J 병존)
텍스트 a 개 이상,b 개 이하{a,b}
J{3,5}JJJ 또는 JJJ 또는 JJJJJ
둘 중 하 나 를 취하 다.
J|A J 또는 A
Java|Hello Java 또는 Hello
"()"에 규정된 조합 유형 은 예 를 들 어,내 가index에서간 의 데 이 터 를 조회 하면(.+?)
Pattern.copile 함 수 를 사용 할 때 정규 표현 식 의 일치 행 위 를 제어 하 는 인 자 를 추가 할 수 있 습 니 다.
Pattern Pattern.copile(String regex,int flag)flag 의 수치 범 위 는 다음 과 같 습 니 다.
Pattern.CANON_EQ 는 두 글자 의'정규 분해(canonical decomposition)'가 똑 같은 경우 에 만 일치 하 는 것 으로 인정 합 니 다.예 를 들 어 이 플래그 를 사용 하면 표현 식'a\u030A'가 일치 합 니까?'기본적으로'규범 상등 성(canonical equivalence)'은 고려 하지 않 는 다.
Pattern.CASE_INSENSITIVE(?i)기본적으로 대소 문자 불분명 감 의 일치 성 은 US-ASCI 문자 집합 에 만 적 용 됩 니 다.이 표 지 는 표현 식 이 대소 문 자 를 무시 하고 일치 하도록 할 수 있 습 니 다.유 니 코드 문자 의 크기 를 알 수 없 는 일치 시 키 려 면 유 니 코드CASE 는 이 로고 와 합치 면 됩 니 다.
Pattern.COMMENTS(?x)이 모드 에서 일치 할 때 빈 칸 문 자 를 무시 합 니 다.설명 은 이 줄 이 끝 날 때 까지\#부터 시작 합 니 다.끼 워 넣 은 플래그 를 통 해 유 닉 스 줄 모드 를 사용 할 수 있 습 니 다.
Pattern.DOTALL(?s)이 모드 에서 표현 식''은 한 줄 을 나타 내 는 끝 자 를 포함 하여 임의의 문자 와 일치 할 수 있 습 니 다.기본적으로 표현 식''은 줄 의 끝 문자 와 일치 하지 않 습 니 다.
Pattern.MULTILINE (?m)이 모드 에서'^'와'$'는 각각 한 줄 의 시작 과 끝 에 일치 합 니 다.또한'^'는 문자열 의 시작 과 일치 합 니 다.'$'도 문자열 의 끝 과 일치 합 니 다.기본적으로 이 두 표현 식 은 문자열 의 시작 과 끝 만 일치 합 니 다.
Pattern.UNICODE_CASE (?u)이 모드 에서 CASE 를 사용 했다 면INSENSITIVE 플래그 는 유 니 코드 문 자 를 대소 문자 로 일치 시 킵 니 다.기본적으로 대소 문자 가 민감 하지 않 은 매 칭 은 US-ASCI 문자 집합 에 만 적 용 됩 니 다.
Pattern.UNIX_LINES(?d)이 모드 에서''만 한 줄 의 중지 로 인식 되 고','^','$'와 일치 합 니 다.공허 한 개념 을 버 리 고 아래 에 몇 가지 간단 한 자바 정규 용례 를 쓰 겠 습 니 다.
문자열 에 인증 을 포함 할 때

//   Java  ,         
Pattern pattern = Pattern.compile("^Java.*"); 
Matcher matcher = pattern.matcher("Java   "); 
boolean b = matcher.matches(); //      ,   true,    false 
System.out.println(b);
다 중 조건 으로 문자열 을 분할 할 때

 Pattern pattern = Pattern.compile("[, |]+"); 
 String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun"); 
 for (int i=0;i<strs.length;i++) { 
  System.out.println(strs[i]); 
 }
텍스트 바 꾸 기(첫 문자 발생)

 Pattern pattern = Pattern.compile("     "); 
 Matcher matcher = pattern.matcher("      Hello World,      Hello World"); //            
 System.out.println(matcher.replaceFirst("Java"));
텍스트 바 꾸 기(모두)

 Pattern pattern = Pattern.compile("     ");
 Matcher matcher = pattern.matcher("      Hello World,      Hello World"); //            
 System.out.println(matcher.replaceAll("Java"));
텍스트 바 꾸 기(문자 바 꾸 기)

 Pattern pattern = Pattern.compile("     "); 
 Matcher matcher = pattern.matcher("      Hello World,      Hello World "); 
 StringBuffer sbr = new StringBuffer(); 
 while (matcher.find()) { 
  matcher.appendReplacement(sbr, "Java"); 
 }
 matcher.appendTail(sbr); 
 System.out.println(sbr.toString()); 
메 일 주소 인지 확인

 String str="[email protected]"; 
 Pattern pattern = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE); 
 Matcher matcher = pattern.matcher(str); 
 System.out.println(matcher.matches()); 
html 태그 제거

Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL); 
Matcher matcher = pattern.matcher("<a href=\"index.html\">  </a>"); 
String string = matcher.replaceAll(""); 
System.out.println(string);
html 에서 대응 하 는 조건 문자열 찾기

Pattern pattern = Pattern.compile("href=\"(.+?)\""); 
Matcher matcher = pattern.matcher("<a href=\"index.html\">  </a>"); 
if(matcher.find()) { 
	 System.out.println(matcher.group(1)); 
}
http://주소//url 캡 처

Pattern pattern = Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+"); 
Matcher matcher = pattern.matcher("dsdsds<http://dsds//gfgffdfd>fdf"); 
StringBuffer buffer = new StringBuffer(); 
while(matcher.find()){ 
	 buffer.append(matcher.group()); 
	 buffer.append("\r
"); System.out.println(buffer.toString()); }
지정 한{}텍스트 바 꾸 기

	String str = "Java        {0} -{1} "; 
	String[][] object={new String[]{"\\{0\\}","1995"},new String[]{"\\{1\\}","2007"}}; 
	System.out.println(replace(str,object)); 

	public static String replace(final String sourceString,Object[] object) { 
	 String temp=sourceString; 
	 for(int i=0;i<object.length;i++) { 
	  String[] result = (String[]) object[i]; 
	  Pattern pattern = Pattern.compile(result[0]); 
	  Matcher matcher = pattern.matcher(temp); 
	  temp = matcher.replaceAll(result[1]); 
	 } 
	 return temp; 
	} 
지정 한 디 렉 터 리 아래 파일/캐 시 파일 목록 을 정규 조건 으로 조회 합 니 다.

	private ArrayList files = new ArrayList(); //         
	private String _path; //             
	private String _regexp;

	class MyFileFilter implements FileFilter {
		/** *        */
		public boolean accept(File file) {
			try {
				Pattern pattern = Pattern.compile(_regexp);
				Matcher match = pattern.matcher(file.getName());
				return match.matches();
			} catch (Exception e) {
				return true;
			}
		}
	}

	/** *       * @param inputs */
	FilesAnalyze(String path, String regexp) {
		getFileName(path, regexp);
	}

	/** *         files * @param input */
	private void getFileName(String path, String regexp) { //   
		_path = path;
		_regexp = regexp;
		File directory = new File(_path);
		File[] filesFile = directory.listFiles(new MyFileFilter());
		if (filesFile == null)
			return;

		for (int j = 0; j < filesFile.length; j++) {
			files.add(filesFile[j]);
		}

		return;
	}

	/** *        * @param out */
	public void print(PrintStream out) {
		Iterator elements = files.iterator();
		while (elements.hasNext()) {
			File file = (File) elements.next();
			out.println(file.getPath());
		}
	}

	public static void output(String path, String regexp) {
		FilesAnalyze fileGroup1 = new FilesAnalyze(path, regexp);
		fileGroup1.print(System.out);
	}

	public static void main(String[] args) {
		output("C:\\", "[A-z|.]*");
	}
기본적으로 이것 뿐 입 니 다.원래 의 내용 이 정말 엉망 이 었 습 니 다.이번에 업 데 이 트 했 습 니 다.

좋은 웹페이지 즐겨찾기