정규식을 활용한 단일 문자 매칭 상세 분석

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

이번에는 정규식을 사용하여 단일 문자를 일치시키는 방법에 대한 자세한 분석을 가져오겠습니다. 정규식을 사용하여 단일 문자를 일치시킬 때 주의사항은 무엇인가요?

이 문서의 예에서는 단일 문자 일치에 대한 정규 표현식자습서를 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. Java 자체에서 정규식을 사용하는 방법에 대해서는 해당 부분에서 설명하겠습니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다.

java 테스트 코드:

/**
 * 根据正则表达式和要匹配的源文本,输出匹配结果
 * @param regex 正则表达式
 * @param sourceText 要匹配的源文本
 */
public static void matchAndPrint(String regex, String sourceText){
  Pattern pattern = Pattern.compile(regex);
  Matcher matcher = pattern.matcher(sourceText);
  while(matcher.find()){
    System.out.println(matcher.group());
  }
}
로그인 후 복사

1. 일반 텍스트 일치

1. 일치하는 결과는 하나만 있습니다.

먼저 오늘은 간단한 정규 표현식을 살펴보겠습니다. 텍스트이지만 정규식입니다. 예를 살펴보겠습니다.

원문: 어제는 역사이고 내일은 미스터리지만 오늘은 선물입니다.

정규식: today

결과: 어제는 역사이고 내일은 미스터리입니다. [오늘]은 선물입니다.

분석: 여기에 사용된 정규식은 일반 텍스트이며 소스 텍스트에서 today와 일치합니다.

matchAndPrint 메소드를 호출하면 출력 결과는 다음과 같습니다.

today

2. 일치하는 결과가 여러 개 있습니다.

원본 텍스트: 어제는 역사이고 내일은 미스터리지만 오늘은 선물입니다.

정규식: is

결과: 어제는 역사이고 내일은 미스터리지만 [오늘]은 선물입니다.

분석: 원문에는 is가 3개 있는데 is가 4개입니다. 출력, 기록에 있는 항목도 일치하기 때문입니다.

matchAndPrint 메소드를 호출하면 출력 결과는 다음과 같습니다.

is

is

is

is

3. 정규식은 구별을 위한 것입니다. 문자 대소문자를 구분하지 않지만 많은 정규식 구현에서는 대소문자를 구분하지 않는 일치 작업도 지원합니다.

JavaScript

에서는 i 플래그를 사용하여 대소문자를 구분하지 않는 일치를 수행합니다. Java에서 대소문자를 구분하지 않으려면 정규식을 컴파일할 때 다음을 지정할 수 있습니다.

Patternpattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
로그인 후 복사

2. 모든 문자와 일치

앞서 본 정규식은 모두 정적 일반 텍스트입니다. 정규식의 힘을 반영하지 않습니다. 다음으로 정규식을 사용하여 예측할 수 없는 문자를 일치시키는 방법을 살펴보겠습니다.

정규 표현식에서는

특수 문자

(또는 문자 모음)를 사용하여 검색할 내용을 제공합니다. . 문자(영어 상태 기간)는 모든 단일 문자와 일치할 수 있습니다. DOS의 ? 문자 및 SQL의 _(밑줄) 문자와 동일합니다. 예를 들어 정규식 c.t는 cat, cut, cot 등과 일치합니다. 예를 살펴보겠습니다. 텍스트:

orders1.txt

orders2.txt

sales1.txt

salesA.txt

orders3.txt

sales2.txt

sales .txt

정규식:

sales

.결과:

orders1.txt

orders2.txt

【sales1】.txt

【salesA】.txt

orders3.txt

【sales2】.txt

【sales.】txt

분석: 긍정적 그러면 매출이 표현됩니다. 문자열 sales와 다른 메모로 구성된 파일 이름을 찾습니다. 결과에서 볼 수 있듯이 .는 문자, 숫자 및 자체와 일치할 수 있습니다. 파일 7개 중 4개가 이 패턴과 일치합니다.

matchAndPrint 메소드가 호출되면 출력 결과는 다음과 같습니다.

sales1

salesA

sales2

sales.

3. 특수 문자 일치

.일반 캐릭터 표현에는 특별한 의미가 있습니다. 패턴에 .이 필요한 경우 정규식에서 .문자 자체가 필요하다는 것을 정규식에 알리는 방법을 찾아야 합니다. 이렇게 하려면 앞에 문자를 이스케이프해야 합니다. 또한 메타문자(이 문자가 문자 자체의 의미가 아닌 특별한 의미를 가짐을 나타내는 메타문자)이기도 합니다. 다음 예를 고려하십시오.

na 또는 sa로 시작하는 파일은 뒤에 오는 숫자에 관계없이 찾아보세요.

텍스트:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

Reg 정규식: .a..txt

결과:

[sal]es.txt

[na1].txt

[na2].txt

[sa1].txt

[sanatxt] .txt

분석: 이 정규식은 na1.txt, na2.txt 및 sa1.txt를 찾았지만 두 가지 예상치 못한 결과도 발견했습니다. 정규식 .a..txt의 . 문자는 모든 문자와 일치하기 때문입니다. . 문자 자체를 일치시키려면 이스케이프를 사용해야 합니다. 정규식을 .a..txt로 수정하면 우리의 요구 사항을 충족할 수 있습니다.

참고: Java를 사용하는 경우 정규식 .a..txt는 Java 언어의 이스케이프 문자이기도 하므로 .a.\.txt로 작성해야 합니다.

4. 요약

정규 표현식은 실제로는 일부 문자로 구성된 문자열입니다. 이러한 문자는 일반 문자(일반 텍스트) 또는 메타 문자(특수 의미가 있는 특수 문자)일 수 있습니다. 일반 문자와 메타 문자를 사용하여 단위 문자를 일치시키는 방법을 소개합니다. .은 모든 문자와 일치할 수 있습니다. 문자를 이스케이프하는 데 사용됩니다. 정규식에서 특별한 의미를 갖는 문자 시퀀스는 항상 문자로 시작됩니다.

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

추천 도서:

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

한자를 포함할 수 없는 JQ의 정기 확인 방법

위 내용은 정규식을 활용한 단일 문자 매칭 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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