이번에는 일반 메타문자 사용에 대한 자세한 설명을 가져왔습니다. 일반 메타문자 사용 시 주의사항은 무엇인가요?
참고: 모든 예제에서 정규식일치 결과는 소스 텍스트의 [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
일반 표현식:
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 33. 특정 문자 범주 일치
문자 집합(여러 문자 중 하나와 일치)이 가장 일반적인 일치 형식이며, 일반적으로 사용되는 일부 문자 세트는 특수 메타문자로 대체될 수 있습니다. 이러한 메타 문자는 특정 문자 클래스(클래스 메타 문자)와 일치합니다. 해당 문자를 하나씩 열거하거나 문자 간격을 정의하여 특정 문자 클래스를 일치시킬 수 있으므로 클래스 메타 문자는 필수는 아니지만 생성된 정규식은 다음과 같습니다. 간결하고 이해하기 쉬우며 실제 응용 분야에서 일반적으로 사용됩니다.
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 }가 추가됩니다. 아래:
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] |
추천 도서: | |
JS 비밀번호 강도 확인 정규식(코드 포함) |
위 내용은 일반 메타문자 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!