자바 정규 표현 식 기초,인 스 턴 스 학습 자료 수집 대전<br>오리지널
12766 단어 정규 표현 식
정규 표현 식 의 특수 문자:
\\ 백 슬 래 쉬
\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|.]*");
}
기본적으로 이것 뿐 입 니 다.원래 의 내용 이 정말 엉망 이 었 습 니 다.이번에 업 데 이 트 했 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.