> 웹 프론트엔드 > JS 튜토리얼 > 정기적인 반복 매칭에 대한 자세한 설명

정기적인 반복 매칭에 대한 자세한 설명

php中世界最好的语言
풀어 주다: 2018-03-30 09:48:12
원래의
1864명이 탐색했습니다.

이번에는 정기반복매칭 사용에 대한 자세한 설명을 가져오겠습니다. 정기반복매칭 사용 시 주의사항은 무엇인지 살펴보겠습니다.

이 문서의 예에서는 정규 표현식반복 일치 튜토리얼을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. 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} , Java의 POSIX 문자는 #\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,}

?

3. 과잉 일치 방지

? 0개 또는 1개의 문자만 일치할 수 있습니다. {n} 및 {n,m}에도 일치 반복 횟수에 상한이 있지만 *에는 상한이 없습니다. , +, {n,}. 이는 때때로 과잉 일치로 이어집니다.

html 태그

텍스트 일치의 예를 살펴보겠습니다.

어제는 역사, 내일은 미스터리이지만 오늘은 선물.

정규식:

<[Bb]>.*

결과:

어제는 역사, 내일은 미스터리이지만 오늘은 선물.

분석: <[Bb]>경기 태그(대소문자 구분)와 일치합니다. 그러나 결과는 예상과 다릅니다. 첫 번째 태그 이후부터 마지막 ​​까지 모두 일치합니다.

왜 이런 일이 일어나는 걸까요? *와 +는 둘 다 탐욕스러운 메타 문자이기 때문에 일치 시 동작 패턴이 많을수록 텍스트의 시작부터 끝까지 일치하는 것이 아니라 텍스트의 시작부터 끝까지 일치하도록 최선을 다할 것입니다. 첫 번째 일치가 발생합니다.

탐욕스러운 행동이 필요하지 않을 때 이러한 메타문자의 게으른 버전을 사용할 수 있습니다. 게으른(Lazy)은 탐욕스러운(greedy) 것과 달리 가능한 한 적은 수의 문자를 일치시키는 것을 의미합니다. 게으른 메타문자는 탐욕스러운 메타문자에만 ? 접미사를 추가하면 됩니다. 탐욕스러운 메타 문자의 게으른 버전은 다음과 같습니다.

* *?

+ +?

{n,} 그냥 <[Bb]>.*?, 결과는 다음과 같습니다:

history

mystery< /B>

gift

IV. 요약

정규식의 진정한 힘은 반복 매칭에 반영됩니다. 여기서는 +, *, ?와 같은 여러 메타 문자의 사용법을 소개합니다. 일치 항목 수를 정확하게 확인하려면 {}를 사용하세요. 메타문자에는 탐욕적(greedy) 유형과 게으른(lazy) 유형이 있습니다. 과도한 일치를 방지해야 하는 경우에는 게으른(lazy) 메타문자를 사용하여 정규식을 구성하세요. 포지션 매칭은 다음 글에서 소개하겠습니다.

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

정규 표현식 튜토리얼의 위치 매칭 튜토리얼(코드 포함)


php와 js를 사용하여 숫자와 문자를 결합한 비밀번호의 정기적인 매칭 구현

위 내용은 정기적인 반복 매칭에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿