이번에는 정기반복매칭 사용에 대한 자세한 설명을 가져오겠습니다. 정기반복매칭 사용 시 주의사항은 무엇인지 살펴보겠습니다.
이 문서의 예에서는 정규 표현식반복 일치 튜토리얼을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.
참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [ 및 ] 사이에 포함됩니다. 일부 예제는 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,}. 이는 때때로 과잉 일치로 이어집니다. 텍스트 일치의 예를 살펴보겠습니다.어제는 역사, 내일은 미스터리이지만 오늘은 선물.
정규식:<[Bb]>.*[Bb]>
결과:어제는 【 역사, 내일은 미스터리이지만 오늘은 선물】.
분석: <[Bb]>경기 태그(대소문자 구분)와 일치합니다. 그러나 결과는 예상과 다릅니다. 첫 번째 태그 이후부터 마지막 까지 모두 일치합니다.왜 이런 일이 일어나는 걸까요? *와 +는 둘 다 탐욕스러운 메타 문자이기 때문에 일치 시 동작 패턴이 많을수록 텍스트의 시작부터 끝까지 일치하는 것이 아니라 텍스트의 시작부터 끝까지 일치하도록 최선을 다할 것입니다. 첫 번째 일치가 발생합니다.
탐욕스러운 행동이 필요하지 않을 때 이러한 메타문자의 게으른 버전을 사용할 수 있습니다. 게으른(Lazy)은 탐욕스러운(greedy) 것과 달리 가능한 한 적은 수의 문자를 일치시키는 것을 의미합니다. 게으른 메타문자는 탐욕스러운 메타문자에만 ? 접미사를 추가하면 됩니다. 탐욕스러운 메타 문자의 게으른 버전은 다음과 같습니다.
* *?
+ +?
{n,} 그냥 <[Bb]>.*?[Bb로 변경하세요. ]>, 결과는 다음과 같습니다:
history
mystery< /B>
gift
IV. 요약
정규식의 진정한 힘은 반복 매칭에 반영됩니다. 여기서는 +, *, ?와 같은 여러 메타 문자의 사용법을 소개합니다. 일치 항목 수를 정확하게 확인하려면 {}를 사용하세요. 메타문자에는 탐욕적(greedy) 유형과 게으른(lazy) 유형이 있습니다. 과도한 일치를 방지해야 하는 경우에는 게으른(lazy) 메타문자를 사용하여 정규식을 구성하세요. 포지션 매칭은 다음 글에서 소개하겠습니다.
이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:정규 표현식 튜토리얼의 위치 매칭 튜토리얼(코드 포함)
php와 js를 사용하여 숫자와 문자를 결합한 비밀번호의 정기적인 매칭 구현
위 내용은 정기적인 반복 매칭에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!