iOS / swift 정규 표현 식

4555 단어
정규 표현 식 은 많은 프로그램 원숭이 에 게 낯 설 지 않 지만 많은 초보 자 들 이 이 물건 을 어떻게 사용 하 는 지 모 르 기 때문에 여기 서 간단 한 소 개 를 하 겠 습 니 다. 상세 한 튜 토리 얼 은 전송 문 정규 표현 식 30 분 입문 튜 토리 얼 을 보 세 요. 그러면 정규 표현 식 은 어떤 역할 을 합 니까?사실 정규 표현 식 은 하나의 판단 문 으로 문자열 에 특정한 문자 가 있 는 지 판단 하고 필요 한 내용 을 캡 처 할 수 있 습 니 다. 표 1. 자주 사용 하 는 메타 문자 입 니 다.
코드
설명 하 다.
.
줄 바 꿈 자 를 제외 한 임의의 문자 와 일치 합 니 다.
\w
알파벳 이나 숫자 또는 밑줄 또는 한자 일치
\s
임의의 공백 문자 일치
\d
일치 하 는 숫자
\b
단어의 시작 이나 끝 과 일치 합 니 다.
^
일치 하 는 문자열 의 시작
$
일치 하 는 문자열 의 끝
예 를 들 어 하나의 배열 이 있 을 때 우 리 는 그 중에서 우리 가 필요 로 하 는 요소 (중국) 가 있 는 지 찾 아야 한다. 이 표현 식 을 사용 하지 않 을 때 우 리 는 먼저 데 이 터 를 캡 처 한 다음 에 우리 가 원 하 는 내용 이 있 는 지 확인 할 수 있다.
NSString *targetStr = @"  ";
NSString *nstring = @"  ,  ,    ,  ,   ";  
    NSArray *array = [nstring componentsSeparatedByString:@","];  
    for (int i = 0; i < [array count]; i++) {  
       if ([targetStr isEqualToString: [array objectAtIndex:i]]){
    NSLog(@"    ")
};  
    }  

그러면 정규 표현 식 에서 (\ \ oc 에서 전의 부호 이기 때문에 \ \ b 는 \ \ b 로 써 야 합 니 다)
 NSString *nstring = @"  ,  ,    ,  ,   ,   ,     ";
//       
    NSString *pattern = @"\\b  \\b";
    NSRegularExpression *regular = [[NSRegularExpression alloc]initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
    NSArray *results = [regular matchesInString:nstring options:0 range:NSMakeRange(0, nstring.length)];
//      
    NSLog(@"      %ld ",results.count);
    for (NSTextCheckingResult *result in results) {
         NSLog(@"%@",[nstring substringWithRange:result.range]);
    }

swift 에서 의 쓰기
let nstring = "  ,  ,    ,  ,   ,   ,     ";
        //       
        let pattern = "\\b  \\b";
        let regular = try! NSRegularExpression(pattern: pattern, options:.CaseInsensitive)
let results = regular.matchesInString(nstring, options: .ReportProgress , range: NSMakeRange(0, nstring.characters.count))
        //      
        print("      \(results.count) ")
        for result in results {
            print((nstring as NSString).substringWithRange(result.range))
            

물론 정규 표현 식 의 역할 은 매우 강력 합 니 다. 사용자 의 암호 가 알파벳 으로 시작 되 는 지, 우리 의 요구 에 부합 되 는 지 (암호 자릿수, 조합 등) 를 설정 하고 네트워크 주소 IP 를 캡 처 할 때 정규 표현 식 몇 줄 코드 를 사용 하여 판단 할 수 있 습 니 다. 그렇게 구리 고 긴 if 문 구 를 쓰 지 않 아 도 됩 니 다.
자주 사용 하 는 정규 표현 식: 인터넷 을 검색 해 보 니 많은 것 이 틀 렸 습 니 다. 특히 IP 판단 등........................................................................
기타 상용 문법: 표 2. 상용 한정 부호
코드 / 문법
설명 하 다.
*
0 회 혹은 그 이상 반복
+
한 번 혹은 더 여러 번 반복 하 다
?
0 회 혹은 1 회 반복
{n}
반복 n 회
{n,}
n 회 혹은 그 이상 반복
{n,m}
n ~ m 회 반복
표 3. 자주 사용 하 는 반 의 코드
코드 / 문법
설명 하 다.
\W
알파벳, 숫자, 밑줄, 한자 가 아 닌 문자 와 일치 합 니 다.
\S
공백 문자 가 아 닌 임의의 문자 와 일치 합 니 다.
\D
임의의 비 숫자 문자 와 일치 합 니 다.
\B
단어 시작 이나 끝 이 아 닌 위치 와 일치 합 니 다.
[^x]
x 를 제외 한 임의의 문자 와 일치 합 니 다.
[^aeiou]
aeiou 라 는 알파벳 을 제외 한 임의의 문자 와 일치 합 니 다.
표 4. 그룹 문법
분류 하 다.
코드 / 문법
설명 하 다.
포획 하 다.
(exp)
exp 와 일치 하고 자동 으로 이름 이 붙 은 그룹 에 텍스트 를 캡 처 합 니 다.
포획 하 다.
(?exp)
exp 와 일치 하고 이름 이 name 인 그룹 에 텍스트 를 캡 처 할 수도 있 습 니 다. (? 'name' exp)
포획 하 다.
(?:exp)
exp 와 일치 합 니 다. 일치 하 는 텍스트 를 캡 처 하지 않 고 이 그룹 에 그룹 번 호 를 할당 하지 않 습 니 다.
너그러이 단언 하 다
(?=exp)
exp 앞 위치 일치
너그러이 단언 하 다
(?<=exp)
exp 뒤의 위치 와 일치 합 니 다.
너그러이 단언 하 다
(?!exp)
뒤에 있 는 것 과 일치 하 는 것 은 exp 의 위치 가 아 닙 니 다.
너그러이 단언 하 다
(?
앞 에 exp 가 아 닌 위치 와 일치 합 니 다.
주석
(?#comment)
이러한 유형의 그룹 은 정규 표현 식 의 처리 에 영향 을 주지 않 고 주석 을 제공 하여 읽 을 수 있 도록 합 니 다.
표 5. 게 으 름 한정 부적
코드 / 문법
설명 하 다.
*?
임 의 반복 은 가능 한 한 적 게 하 라.
+?
한 번 또는 더 여러 번 반복 하지만 가능 한 한 적 게 반복 하 세 요.
??
0 회 또는 1 회 반복 하지만 가능 한 한 적 게 반복 합 니 다.
{n,m}?
n 에서 m 회 반복 하지만 가능 한 한 적 게 반복 합 니 다.
{n,}?
n 회 이상 반복 되 지만 가능 한 한 적 게 반복 합 니 다.
표 6. 자주 사용 하 는 처리 옵션
명칭.
설명 하 다.
무시 케이스 (대소 문자 무시)
일치 할 때 대소 문 자 를 구분 하지 않 습 니 다.
멀 티 라인 (멀 티 라인 모드)
^ 와 $의 의 미 를 변경 합 니 다. 모든 문자열 의 시작 과 끝 이 일치 하 는 것 이 아니 라, 각각 한 줄 의 첫 줄 과 끝 에 일치 하도록 합 니 다. (이 모드 에서 $의 정확 한 의 미 는 이전 위치 와 문자열 이 끝나 기 전의 위치 와 일치 합 니 다.)
싱글 라인 (단일 줄 모드)
모든 문자 와 일치 하도록 의 미 를 변경 합 니 다 (줄 바 꿈 포함).
IgnorePatternWhitespace (공백 무시)
표현 식 의 비 전의 공백 을 무시 하고 \ # 표 시 된 설명 을 사용 합 니 다.
명시 적 캡 처 (명시 적 캡 처)
표시 되 어 있 는 그룹 만 캡 처 합 니 다.

좋은 웹페이지 즐겨찾기