정규식 튜토리얼 - 단일 문자 일치에 대한 자세한 설명

高洛峰
풀어 주다: 2023-03-04 17:34:01
원래의
1879명이 탐색했습니다.

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

참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [and] 사이에 포함됩니다. 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와 일치하는 일반 텍스트입니다.

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

오늘

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

원본 텍스트: 어제는 기록입니다. 내일은 미스터리인데 오늘은 선물이다

정규식: is

결과: 어제는 역사,내일은 미스터리지만 【오늘】은 선물이다

분석: 원본 텍스트에는 3개의 is가 있지만 기록의 is도 일치하므로 4개의 is가 출력됩니다.

은 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

정규식: .a..txt

결과:

[sal]es.txt

[na1].txt

[na2].txt

[sa1].txt

[sanatxt].txt

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

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

4. 요약

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

단일 문자 일치에 대한 더 많은 정규식 튜토리얼과 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


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