정규식 튜토리얼의 반복 매칭에 대한 자세한 설명
이 기사의 예에서는 정규식 튜토리얼의 반복 매칭을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.
참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [and] 사이에 포함됩니다. Java 자체의 정규식에 대한 설명은 해당 위치에서 설명합니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다.
1. 일치하는 항목은 몇 개입니까?
이전 기사에서는 하나의 문자를 일치시키는 것에 대해 설명했지만 문자 또는 문자 집합을 여러 번 일치시켜야 합니다. 예를 들어, 이전에 언급한 방법을 사용하여 이메일 주소를 일치시키려는 경우 누군가 w@w.w와 같은 정규식을 작성할 수 있지만 이는 a@b.c와 같은 주소만 일치할 수 있으며 이는 분명히 잘못된 방법입니다. 이메일 주소를 일치시키려면
먼저 이메일 주소의 구성을 알아야 합니다. 영숫자 또는 밑줄로 시작하고 @ 기호가 뒤따른 문자 그룹, 도메인 이름, 즉 사용자 이름@도메인 이름입니다. 주소. 그러나 이는 특정 이메일 서비스 제공업체에 따라 다릅니다. 일부는 사용자 이름에 .
1. 하나 이상의 문자 일치
동일한 문자(또는 문자 집합)의 여러 반복을 일치시키려면 접미사로 + 문자를 추가하면 됩니다. +는 하나 이상의 문자(적어도 하나)와 일치합니다. 예를 들어, a는 a 자체와 일치하고, a+는 하나 이상의 연속된 a와 일치합니다. [0-9]+는 여러 연속 숫자와 일치합니다.
참고: 문자 집합에 + 접미사를 추가하는 경우 +는 문자 집합 외부에 배치되어야 합니다. 그렇지 않으면 반복되는 일치가 발생하지 않습니다. 예를 들어, [0-9+]는 숫자나 + 기호를 나타냅니다. 문법적으로는 정확하지만 우리가 원하는 것은 아닙니다.
텍스트: 안녕하세요, mhmyqn@qq.com 또는 mhmyqn@126.com이 제 이메일입니다.
정규식: w+@(w+.)+w+
결과 : 안녕하세요, [mhmyqn@qq.com] 또는 [mhmyqn@126.com]은 제 이메일입니다.
분석: w+는 하나 이상의 문자와 일치할 수 있으며 하위 표현식 (w+.)+는 다음과 같은 문자열과 일치할 수 있습니다. xxxx.edu는 . 문자로 끝나지 않으므로 끝에 w+가 표시됩니다. mhmyqn@xxxx.edu.cn과 같은 이메일 주소도 일치됩니다.
2. 0개 이상의 문자 일치
메타 문자 *를 사용하여 0개 이상의 문자를 일치시킵니다. 사용법은 +와 정확히 동일하며, 문자 옆에 넣거나 세트 뒤에 넣기만 하면 됩니다. 를 사용하면 해당 문자(또는 문자 집합)가 0개 이상 연속으로 나타나는 것을 일치시킬 수 있습니다. 예를 들어 정규식 ab*c는 ac, abc, abbbbc 등과 일치할 수 있습니다.
3. 0개 또는 1개의 문자를 일치시킵니다.
0개 또는 1개의 문자를 일치시키려면 메타 문자 ?를 사용합니다. 이전 글에서 언급했듯이, 빈 줄을 일치시키기 위해 정규식 rnrn을 사용하지만 Unix와 Linux에서는 r이 필수가 아니므로 Windows에서는 메타 문자 ?, r?nr?n을 사용하여 빈 줄을 일치시킬 수 있습니다. Unix와 Linux에서는 빈 줄과 일치합니다. http 또는 https 프로토콜과 일치하는 URL의 예를 살펴보겠습니다.
텍스트: URL은 http://www.mikan.com입니다. 대신 https://www.mikan.com을 사용하여 안전하게 연결하세요. .
정규식: https?://(w+.)+w+
결과: URL은 [http://www.mikan.com]입니다. 안전하게 연결하려면 [https를 사용하세요. : //www.mikan.com] 대신
분석: 이 패턴은 https?로 시작하는데, 이는 ? 앞의 문자가 존재할 수도 있고 존재하지 않을 수도 있으므로 http 또는 https와 일치할 수 있음을 의미합니다. 및 이전 부분은 예시와 동일합니다.
2. 일치 반복 횟수
정규식의 +, * 및 ?는 많은 문제를 해결하지만:
1) + 및 *와 일치하는 문자 수가 있습니다. 개수에는 상한이 없습니다. 일치하는 최대 문자 수를 설정할 수 없습니다.
2) +, * 및 ?는 최소한 1개 또는 0개의 문자와 일치합니다. 일치하는 다른 최소 문자 수를 설정할 수 없습니다.
3) *와 +만 사용하면 일치하는 문자 수를 정확한 숫자로 설정할 수 없습니다.
정규식은 반복 횟수를 설정하는 구문을 제공합니다. 반복 횟수는 { 및 } 문자를 사용하여 지정하고 그 사이에 값을 입력해야 합니다.
1. 반복 일치 횟수에 대한 정확한 값을 설정하세요.
반복 일치 횟수에 대한 정확한 값을 설정하려면 {와 } 사이에 숫자를 쓰면 됩니다. 예를 들어, {4}는 앞의 문자(또는 문자 집합)가 원본 텍스트에서 4번 반복되어야 일치 항목으로 간주된다는 의미입니다. 3번만 나타나면 일치 항목으로 간주되지 않습니다.
페이지의 색상 일치에 대한 이전 기사에서 언급했듯이 #[[:xdigit:]]{6} 또는 #[0-9a-fA와 같이 반복 횟수를 사용하여 일치시킬 수 있습니다. -F ]{6}, POSIX 문자는 Java에서 #\p{XDigit}{6}입니다.
2. 반복 일치 횟수 간격 설정
{} 구문을 사용하여 반복 일치 횟수 간격을 설정할 수도 있습니다. 즉, 최소값과 최대값을 설정할 수 있습니다. 값. 이러한 간격은 {n, m} 형식으로 제공되어야 하며, 여기서 n>=m>=0입니다. 예를 들어 날짜 형식이 올바른지 확인하는 정규식(날짜의 유효성을 확인하지 않고)(예: 2012-08-12 또는 2012-8-12 날짜): d{4}-d{1, 2}-d{1, 2}.
3. 경기는 최소 몇 번 반복해야 할까요
{} 구문의 마지막 용도는 최소 반복 횟수(반드시 최대 반복 횟수는 아님)를 제공하는 것입니다. 예를 들어 최소 3번의 반복을 나타내는 {3,}입니다. 참고: {3,}에는 쉼표가 있어야 하며, 쉼표 뒤에 공백이 있어서는 안 됩니다. 그렇지 않으면 뭔가 잘못될 것입니다.
예를 살펴보겠습니다. 정규식을 사용하여 $100보다 큰 모든 금액을 찾습니다.
텍스트:
$25.36
$125.36
$205.0
$2500.44
$44.30
정규 표현식: $d{3,}.d{2}
결과:
$25.36
[$125.36]
[$205.0]
[$2500.44]
$44.30
+,*,?예 반복 횟수:
+는 {1,}
*과 동일합니다. {0,}
은 {0,1}
과 동일합니다.3. 과잉 일치 방지
? 0개 또는 1개의 문자만 일치할 수 있습니다. {n} 및 {n,m}에도 반복 횟수에 상한이 있지만 *, +, {n, }에는 상한이 없으므로 때로는 오버매칭이 발생합니다.
html 태그 일치의 예를 살펴보겠습니다
텍스트:
어제는 역사,내일은 미스터리< ;/ B>, 그런데 오늘은 선물입니다.
정규 표현식: <[Bb]>.*[Bb]>
결과:
어제는 [역사, 내일은 미스터리이지만 오늘은 선물]입니다.
분석: <[Bb]>는 태그와 일치하고(대소문자 구분) [Bb]>는 태그와 일치합니다. 그러나 결과는 예상과 다릅니다. 첫 번째 태그 이후부터 마지막 까지 모두 일치합니다.
왜 이런 일이 일어나는 걸까요? *와 +는 둘 다 탐욕스러운 메타 문자이기 때문에 일치 시 동작 패턴이 많을수록 텍스트의 시작부터 끝까지 일치하는 것이 아니라 텍스트의 시작부터 끝까지 일치하도록 최선을 다할 것입니다. 첫 번째 일치가 발생합니다.
그러한 탐욕스러운 행동이 필요하지 않을 때 이러한 메타문자의 게으른 버전을 사용할 수 있습니다. 게으른(Lazy)은 탐욕스러운(greedy) 것과 달리 가능한 한 적은 수의 문자를 일치시키는 것을 의미합니다. 게으른 메타 문자는 탐욕스러운 메타 문자에 ? 접미사만 추가하면 됩니다. 탐욕스러운 메타 문자의 게으른 버전은 다음과 같습니다.
* *?
+ >따라서 위의 예에서 정규 표현식은 <[Bb]>로만 변경하면 됩니다. *?[Bb]> 결과는 다음과 같습니다.
history< /b>
mystery
선물
IV.요약
정규 표현식 수식의 진정한 힘은 일치하는 반복 횟수에 반영됩니다. 여기서는 +, *, ?와 같은 여러 메타 문자의 사용법을 소개합니다. 일치 항목 수를 정확하게 확인하려면 {}를 사용하세요. 메타문자에는 탐욕적(greedy) 유형과 게으른(lazy) 유형이 있습니다. 과도한 일치를 방지해야 하는 경우에는 게으른(lazy) 메타문자를 사용하여 정규식을 구성하세요. 포지션 매칭은 다음 글에서 소개하겠습니다.
이 글이 정규 표현식을 배우는 모든 분들에게 도움이 되기를 바랍니다.
반복 매칭에 대한 더 많은 정규식 튜토리얼과 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.
