다크호스 프로그래머정규 표현 식 (정규 일치, 교체, 절단, 획득, 정규 연습)
정규 표현 식 특징
1. 정규 표현 식: 일정한 규칙 에 맞 는 표현 식. 역할: 문자열 을 전문 적 으로 조작 하 는 데 사용 합 니 다. 특징: 일부 특정한 기호 로 코드 조작 을 표시 합 니 다.이렇게 하면 간단하게 쓴다. 그래서 정규 표현 식 을 배 우 는 것 은 특수 기호의 사용 을 배 우 는 것 이다.
장점: 문자열 에 대한 복잡 한 조작 을 간소화 할 수 있 습 니 다. 단점: 기호 정의 가 많 을 수록 정규 가 길 어 지고 읽 기 가 떨어진다.
2. 구체 적 인 조작 기능: 1) 일치: String matches 방법. 2) 절단: String split (); 3) 교체: String replace All ();
3. String 클래스 의 방법: boolean matches (String regex) 는 이 문자열 이 주어진 정규 표현 식 과 일치 하 는 지 알려 줍 니 다. public boolean matches (String regex) 는 이 문자열 이 주어진 정규 표현 식 과 일치 하 는 지 알려 줍 니 다. 이 방법 을 사용 하 는 str. matches (regex) 형식 은 다음 표현 식 과 똑 같 습 니 다.
Pattern.matches(regex, str)
인자: regex - 이 문자열 과 일치 하 는 정규 표현 식 돌아 가기: 이 문자열 이 주어진 정규 표현 식 과 일치 할 때 만 true 로 돌아 갑 니 다. 던 지기: PatternSyntax Exception - 정규 표현 식 의 문법 이 잘못 되면
2 획득 기능
1. 작업 단계: 1) 정규 표현 식 을 대상 으로 봉인 합 니 다. 2) 정규 대상 을 조작 할 문자열 과 연결 합 니 다. 3) 연결 후 정규 일치 엔진 을 가 져 옵 니 다. 4) 엔진 을 통 해 규칙 에 맞 는 하위 문자열 을 꺼 내 는 등 조작 합 니 다. 2. 클래스 패턴 (java. util. regex) 1) 정규 표현 식 의 컴 파일 표시 형식. 문자열 로 지정 한 정규 표현 식 은 먼저 이러한 인 스 턴 스 로 컴 파일 되 어야 합 니 다.그리고 얻 은 모드 를 Matcher 대상 을 만 드 는 데 사용 할 수 있 습 니 다. 정규 표현 식 에 따라 이 대상 은 임의의 문자 시퀀스 와 일치 할 수 있 습 니 다.일치 하 는 모든 상 태 를 일치 하 는 장치 에 저장 합 니 다. 그래서 여러 개의 매 칭 기 는 같은 모드 를 공유 할 수 있 습 니 다. 따라서 전형 적 인 호출 순 서 는? Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 2) 방법 요약 static Pattern compile(String regex) 주어진 정규 표현 식 을 모드 에 컴 파일 합 니 다. Matcher matcher(CharSequence input) 이 모드 와 일치 하 는 입력 기 를 만 듭 니 다. static boolean matches(String regex, CharSequence input) 주어진 정규 표현 식 을 컴 파일 하고 주어진 입력 을 일치 시 키 려 고 시도 합 니 다. String pattern() 이 모드 를 컴 파일 한 정규 표현 식 을 되 돌려 줍 니 다. static Pattern compile(String regex, int flags) 주어진 정규 표현 식 을 주어진 플래그 가 있 는 모드 로 컴 파일 합 니 다. int flags() 이 모드 의 일치 표 지 를 되 돌려 줍 니 다. String[] split(CharSequence input) 이 모드 를 둘 러 싼 일치 분할 입력 시퀀스 입 니 다. 3. 클래스 Matcher (java. util. regex)
1) Pattern 이 character sequence 에 대해 일치 하 는 동작 을 수행 하 는 엔진 을 설명 합 니 다.
모드 를 호출 하 는 matcher 방법 으로 모드 에서 일치 기 를 만 듭 니 다.일치 기 를 만 든 후 세 가지 서로 다른 일치 동작 을 수행 할 수 있 습 니 다.
matches 방법 은 전체 입력 시퀀스 를 이 모드 와 일치 시 키 려 고 시도 합 니 다.
lookingAt 입력 시퀀스 를 처음부터 이 모드 와 일치 시 키 려 고 시도 합 니 다.
find 방법 은 입력 시퀀스 를 검색 하여 이 모드 와 일치 하 는 다음 하위 시퀀스 를 찾 습 니 다.
모든 방법 은 성공 이나 실 패 를 나타 내 는 불 값 을 되 돌려 줍 니 다.일치 하 는 상 태 를 조회 하면 성공 적 인 일치 에 대한 더 많은 정 보 를 얻 을 수 있 습 니 다.
2) 방법 요약 int end() 마지막 일치 하 는 문자 의 오프셋 을 되 돌려 줍 니 다. boolean find() 이 모드 와 일치 하 는 입력 시퀀스 의 다음 하위 시퀀스 를 찾 아 보십시오. boolean find(int start) 이 매 칭 기 를 리 셋 한 다음 이 모드 와 일치 하 는 색인 에서 시작 하 는 입력 시퀀스 의 다음 하위 시퀀스 를 찾 아 보십시오. String group() 이전에 일치 하 는 작업 에 일치 하 는 입력 서브 시퀀스 를 되 돌려 줍 니 다. boolean lookingAt() 영역 에서 시작 하 는 입력 시퀀스 를 이 모드 와 일치 시 키 려 고 시도 합 니 다. boolean matches() 전체 영역 을 패턴 과 일치 시 키 려 고 시도 합 니 다. Pattern pattern() 이 일치 기 설명 모드 를 되 돌려 줍 니 다. int start() 이전에 일치 하 는 초기 색인 을 되 돌려 줍 니 다. Matcher reset() 일치 하 는 장 치 를 초기 화 합 니 다. String replaceAll(String replacement) 교체 모드 는 주어진 교체 문자열 과 일치 하 는 입력 시퀀스 의 모든 하위 시퀀스 입 니 다.
정규 표현 식 연습
/ * 필요 1: 다음 문자열 을: 프로 그래 밍 을 배 우려 고 합 니 다. String str = "나 는... 나 는..........................................................................
*/
class
{
public static void main(String[] args)
{
String str = " .. .. ... .. . . .. . .. .... ...";
str = str.replaceAll("\\.","");
System.out.println(str);
str = str.replaceAll("(.)\\1+" ,"$1");
System.out.println(str);
}
}
/* 필요 2: 192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30 IP 주 소 를 주소 순 으로 정렬 합 니 다.
도대체 네 가지 기능 중 어느 것 을 사용 합 니까?아니면 어떤 거 요? 사고방식: 1. 이 문자 가 옳 고 그 름 만 알 고 싶다 면 일치 하 는 것 을 사용 하 십시오. 2. 기 존 문자열 을 다른 문자열 로 바 꾸 려 면 바 꾸 십시오. 3. 문자열 을 여러 문자열 로 바 꾸 려 고 합 니 다.절단: 규칙 이외 의 하위 문자열 가 져 오기. 4. 필요 한 문자열 문자열 을 가 져 오 려 면 규칙 에 맞 는 문자열 을 가 져 오 십시오.
문자열 의 자 연 스 러 운 순서에 따라 단락 마다 세 자리 씩 만 들 면 된다. 1. 각 단락 에 필요 한 최대 0 으로 보완 하면 단락 마다 최소 3 명 이 보장 된다. 2. 한 단락 당 세 자리 만 유지 합 니 다.이렇게 모든 IP 주 소 는 단락 당 3 자리 입 니 다. * /
public class RegexTest {
public static void main(String[] args){
String str = "192.68.1.254 102.49.23.13 10.10.10.10 2.2.2.2 8.109.90.30";
str = str.replaceAll("(\\d+)","00$1");
System.out.println(str);
str = str.replaceAll("0*(\\d{3})","$1");
System.out.println(str);
String ips[] = str.split(" ");
TreeSet<String> ts = new TreeSet<String> ();
for(String ip : ips)
ts.add(ip);
}
for(String ip : ts){
String ip = ip.replaceAll("0*(\\d+)","$1");
}
}
/ * 필요 3: 메 일 주 소 를 검사 하 다. 지정 한 문서 의 메 일 주 소 를 가 져 옵 니 다.(홈 페이지 파충류) 획득 기능 을 사용 합 니 다.Pattern Matcher [email protected] */
class Test
{
public static void main(String[] args)
{
URL url = new URL("http://tieba.baidu.com/p/2346233770");
URLConnection conn = url.openConnection();
BufferedReader bufr =
new BufferedReader(new InputStreamReader(conn.getInputStream());
String line = null;
String mailRegex = "\\w+@\\w+(\\.\\w)+";
Pattern p = Pattern.compile(mailRegex);
while((line = bufr.readLine())!= null){
Matcher m = p.matcher(line);
while(m.find())
{
System.out.println(m.group());
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.