>  기사  >  웹 프론트엔드  >  일반 메타문자 사용에 대한 자세한 설명

일반 메타문자 사용에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-03-30 09:49:431736검색

이번에는 일반 메타문자 사용에 대한 자세한 설명을 가져왔습니다. 일반 메타문자 사용 시 주의사항은 무엇인가요?

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

1. Escape 특수 문자

메타 문자는 정규식에서 특별한 의미를 갖는 문자입니다. 메타 문자는 정규식에서 특별한 의미를 갖기 때문에 이러한 문자는 그 자체를 나타내는 데 사용할 수 없습니다. 백슬래시를 앞에 붙여 메타 문자를 이스케이프할 수 있습니다. 그러면 결과 이스케이프 시퀀스가 ​​특수 메타 문자 의미가 아닌 해당 문자 자체와 일치하게 됩니다. 예를 들어 [and]를 일치시키려면


를 이스케이프해야 합니다.

메타 문자를 이스케이프하려면 슬래시 문자를 사용해야 합니다. 즉, 문자 자체도 메타 문자이기 때문에 \로 이스케이프해야 합니다. Windows 파일 경로 일치와 같은.

2. 공백 문자 일치

메타 문자는 대략 두 가지 유형으로 나눌 수 있습니다. 하나는 텍스트를 일치시키는 데 사용되며(예: .), 다른 하나는 정규 표현식의 문법에 필요합니다(예: [and] ). .

정규식 검색을 수행할 때 원본 텍스트에서 인쇄되지 않는 공백 문자를 일치시켜야 하는 상황에 자주 직면합니다. 예를 들어 모든 탭 문자를 찾아야 하거나, 개행 문자를 찾아야 하는 경우 이러한 문자는 정규 표현식에 직접 입력하기 어렵습니다. 이 경우 아래 나열된 특수 문자를 사용하여 입력할 수 있습니다. :

b 한 문자 뒤로 이동(및 삭제)(백스페이스 키)
f 폼 피드
n 라인 피드
r 운송 반납
t Tab(탭 키)
v 세로 탭

파일에서 빈 줄을 제거하는 예를 살펴보겠습니다.

텍스트:

8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6 16 9 3 8 7 5 1 2 4
1 8 3 4 9 9 9 6 1 9 5 36 7 8 8 9 1 5.4 8 9 5 3 1 7 6 2

1 7 5 2 9 6 4 8 3


일반 표현식:
rnrn

분석: rn은 Windows 운영 체제에서 텍스트 줄의 끝 태그로 사용되는 캐리지 리턴 + 줄 바꿈 조합과 일치합니다. 정규식 rnrn을 사용한 검색은 빈 줄인 두 개의 연속된 줄 끝 태그와 일치합니다.

참고: Unix 및 Linux 운영 체제에서는 텍스트 줄을 끝내는 데 개행 문자만 사용됩니다. 즉, Unix 또는 Linux 시스템에서 빈 줄을 일치시키려면 nn만 사용하면 되며 r을 추가할 필요가 없습니다. Windows와 Unix/Linux 모두에 적용할 수 있는 정규식에는 선택적 r과 반드시 ​​일치해야 하는 n, 즉 r?nr?n이 포함되어야 합니다. 이에 대해서는 이후 기사에서 설명합니다.

Java 코드는 다음과 같습니다.

public static void matchBlankLine() throws Exception{
  BufferedReader br = new BufferedReader(new FileReader(new File("E:/九宫格.txt")));
  StringBuilder sb = new StringBuilder();
  char[] cbuf = new char[1024];
  int len = 0;
  while(br.ready() && (len = br.read(cbuf)) > 0){
    br.read(cbuf);
    sb.append(cbuf, 0, len);
  }
  String reg = "\r\n\r\n";
  System.out.println("原内容:\n" + sb.toString());
  System.out.println("处理后:-----------------------------");
  System.out.println(sb.toString().replaceAll(reg, "\r\n"));
}
실행 결과는 다음과 같습니다.

原内容:
8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6
6 9 3 8 7 5 1 2 4
5 1 8 3 4 2 6 9 7
2 4 7 6 1 9 5 3 8
3 2 6 7 8 4 9 1 5
4 8 9 5 3 1 7 6 2
1 7 5 2 9 6 4 8 3
 
处理后:-----------------------------
8 5 4 1 6 3 2 7 9
7 6 2 9 5 8 3 4 1
9 3 1 4 2 7 8 5 6
6 9 3 8 7 5 1 2 4
5 1 8 3 4 2 6 9 7
2 4 7 6 1 9 5 3 8
3 2 6 7 8 4 9 1 5
4 8 9 5 3 1 7 6 2
1 7 5 2 9 6 4 8 3

3. 특정 문자 범주 일치

문자 집합(여러 문자 중 하나와 일치)이 가장 일반적인 일치 형식이며, 일반적으로 사용되는 일부 문자 세트는 특수 메타문자로 대체될 수 있습니다. 이러한 메타 문자는 특정 문자 클래스(클래스 메타 문자)와 일치합니다. 해당 문자를 하나씩 열거하거나 문자 간격을 정의하여 특정 문자 클래스를 일치시킬 수 있으므로 클래스 메타 문자는 필수는 아니지만 생성된 정규식은 다음과 같습니다. 간결하고 이해하기 쉬우며 실제 응용 분야에서 일반적으로 사용됩니다.

1. 숫자와 숫자가 아닌 일치

d 모든 숫자는 [0-9] 또는 [0123456789]D 숫자가 아닌 모든 것은 [^0-9] 또는 [^0123456789 ]와 같습니다.

2. 문자 및 숫자를 문자가 아닌 숫자와 일치시킵니다.

문자(A-Z는 대소문자를 구분하지 않음), 숫자 및 밑줄은 일반적으로 사용되는 문자 집합입니다.

w any 문자(대소문자 구분 안 함), 숫자 및 밑줄은 [0-9a-zA-Z_]

W와 동일합니다. 영숫자가 아닌 모든 밑줄은 [^0-9a-zA-Z_]

3과 동일합니다. 일치 공백 문자 및 공백이 아닌 문자

s 아래 공백 문자는 [fnrtv]

S 아래 공백 문자는 [^fnrtv]

와 동일합니다. 참고: s 내의 s에 없는 백스페이스 메타 문자 b는 없습니다. 범위.

4. 16진수 또는 8진수 값 일치 ​​

16진수: 접두사 x가 붙습니다. 예: x0A는 ASCII 문자 10(개행 문자)에 해당하며 그 효과는 n과 동일합니다.

8진수: 접두사 사용

POSIX 문자는 이전에 본 메타 문자와 다릅니다. 정규식을 사용하여 웹 페이지의 색상을 일치시키는 예를 살펴보겠습니다.

Text: Background-color:# 3636FF;height :30px;width:60px;">테스트

정규 표현식: #[[:xdigit:]] [[:xdigit:]] [[:xdigit:]] [ [:xdigit:] ] [[:xdigit:]] [[:xdigit:]]

결과:【#3636FF】;height:30px;width:60px ;">Test< ;/span>

참고: 여기에 사용된 패턴은 [[로 시작하고 ]]로 끝나는데, 이는 POSIX 문자 클래스를 사용하는 데 필요합니다. POSIX 문자는 [: 및:] 사이, 외부 [and] 사이에 있어야 합니다. 문자는 집합을 정의하는 데 사용되며 내부 [and] 문자는 POSIX 문자 클래스 자체의 일부입니다.

Java의 POSIX 문자 표현은 [:와 :] 사이에 포함되는 대신 p로 시작하고 {와 } 사이에 포함되며, 그림과 같이 p{ASCII }가 추가됩니다. 아래:

나는 당신이 이 기사의 사례를 읽은 후 더 흥미로운 기사를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요! 추천 도서: 정규 표현식 튜토리얼의 위치 일치 튜토리얼(코드 포함) JS 비밀번호 강도 확인 정규식(코드 포함)
p{Alnum} 영숫자 문자: [p{Alpha}p{Digit}]
p{Alpha} 알파벳 문자: [p{Lower}p {Upper}]
p{ASCII} 모든 ASCII: [x00-x7F]
p{공백} 공백 또는 탭: [t]
p{Cntrl} 제어 문자: [x00- x1Fx7F]
p{Digit} 십진수: [0-9]
p{Graph} 표시되는 문자: [p{Alnum}p{Punct}] ... :!"# $%&'()*+,-./:;<=>?@[]^_`{|}~
p{Space} 공백 문자: [ tnx0Bfr]
p{Upper} 대문자: [A-Z]
p{XDigit} 16진수: [0-9a-fA-F]

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.