이 기사의 예에서는 정규식 튜토리얼의 위치 일치에 대해 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.
참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [and] 사이에 포함됩니다. Java 자체의 정규식에 대한 설명은 해당 위치에서 설명합니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다.
1. 문제 소개
텍스트에서 특정 단어를 일치시키려는 경우(나중에 소개할 다중 줄 모드는 고려하지 않음) 다음과 같이 보일 수 있습니다.
텍스트: 어제는 역사이고 내일은 미스터리입니다. 하지만 오늘은 선물입니다.
정규 표현식: is
결과: 어제 [is ] h [is] 이야기, 내일은 [is] 미스터리지만 오늘은 선물입니다.
분석: 원래는 is라는 단어만 일치시키려고 했으나, 다른 단어에 포함된 the도 일치했습니다. . 이 문제를 해결하려면 경계 구분 기호를 사용하세요. 경계 구분 기호는 정규식에서 일치 작업이 수행되기를 원하는 위치(또는 경계)를 나타내는 데 사용되는 메타 문자입니다.
2. 단어 경계
일반적으로 사용되는 경계는 단어의 시작과 끝을 일치시키는 데 사용되는 한정자 b로 지정되는 단어 경계입니다. 보다 정확하게는 단어를 형성하는 데 사용할 수 있는 문자(문자, 숫자, w와 일치하는 문자인 밑줄)와 단어를 형성하는 데 사용할 수 없는 문자(W는 문자와 일치) 사이의 위치를 일치시킵니다. . 이전 예를 살펴보겠습니다.
텍스트: 어제는 역사이고 내일은 미스터리이지만 오늘은 선물입니다.
정규식: bisb
결과: 어제 [ is】 History, Tomorrow 【is】는 미스터리지만 today 【is】는 선물입니다.
분석: 원문에서 is라는 단어 앞뒤에 공백이 있고 이는 패턴 bisb( 공백은 단어를 구분하는 데 사용되는 문자 중 하나입니다. History라는 단어에도 is가 포함되어 있습니다. 그 이유는 이 두 문자 중 어느 것도 b와 일치할 수 없기 때문입니다.
단어 경계가 일치하지 않으면 B를 사용합니다. 예:
텍스트: 색상 코드 패스 키에 표시된 9자리 ID를 입력하세요.
정규 표현식: B-B
결과: 입력하세요. 색상에 표시된 [9자리] ID - 코드화된 [pass-key]
분석: B-B는 9자리로 앞뒤에 단어 경계가 아닌 하이픈을 일치시킵니다. -key 하이픈 앞뒤에 공백이 없어 일치할 수 없습니다. 그러나 색상으로 구분한 경우 하이픈 앞뒤에 공백이 있으므로 일치할 수 없습니다.
3. 문자열 경계
단어 경계는 단어와 관련된 위치(단어의 시작, 단어의 끝, 전체 단어 등)를 일치시키는 데 사용할 수 있습니다. 문자열 경계는 비슷한 목적을 가지고 있지만 문자열과 관련된 위치(문자열의 시작, 문자열의 끝, 전체 문자열 등)를 일치시키는 데 사용됩니다. 문자열 경계를 정의하는 데 사용되는 메타 문자는 두 가지가 있습니다. 하나는 문자열의 시작을 정의하는 데 사용되는 ^이고 다른 하나는 문자열의 끝을 정의하는 데 사용되는 $입니다.
예를 들어 XML 문서의 적법성을 확인하려는 경우 법적 XML 문서는 모두 로 시작합니다.
텍스트:
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="ear"> </project>
정규식: ^s*
결과:
xml version="1.0" 인코딩="UTF-8"?>
분석: ^ 문자열의 시작 부분과 일치합니다. 따라서 ^s*는 문자열의 시작 부분과 그 이후의 0개 이상의 공백 문자와 일치합니다. 공백, 탭, 개행 문자 등이 태그 앞에 허용되기 때문입니다. 문자.
$ 메타 문자의 사용법은 위치의 차이를 제외하면 ^의 사용법과 완전히 동일합니다. 예를 들어 HTML 페이지가