이번에는 정규식 위치 매칭 튜토리얼(코드 포함)을 가져왔습니다. 정규식 튜토리얼 위치 매칭 사용 시 주의사항은 무엇인가요? 실제 사례를 살펴보겠습니다.
이 기사의 예에서는 정규식 튜토리얼의 위치 일치를 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.
참고: 모든 예제에서 정규식 일치 결과는 소스 텍스트의 [ 및 ] 사이에 포함됩니다. 일부 예제는 Java를 사용하여 구현됩니다. Java 자체에서 정규식을 사용하는 방법에 대해서는 해당 부분에서 설명하겠습니다. 모든 Java 예제는 JDK1.6.0_13에서 테스트되었습니다.
1. 문제 소개
텍스트에서 특정 단어를 일치시키려는 경우(나중에 소개할 지금은 여러 줄 모드를 무시하고) 다음과 같이 보일 수 있습니다.
텍스트: 어제는 역사이고, 내일은 미스터리지만 오늘은 선물입니다.
정규식: is
결과: 어제 【is】 h【is】tory, 내일 【is】 미스터리인데 오늘 【is】 선물입니다.
분석: 원래는 is라는 단어만 일치시키려고 했으나, 다른 단어에 포함된 is도 일치시켰습니다. 이 문제를 해결하려면 경계 구분 기호를 사용하십시오. 즉, 정규식에서 일부 메타 문자 를 사용하여 일치 작업이 수행되기를 원하는 위치(또는 경계)를 나타냅니다.
2. 단어 경계
일반적으로 사용되는 경계는 단어의 시작과 끝을 일치시키는 데 사용되는 한정자 b로 지정되는 단어 경계입니다. 보다 정확하게는 단어를 형성하는 데 사용할 수 있는 문자(문자, 숫자, w와 일치하는 문자인 밑줄)와 단어를 형성하는 데 사용할 수 없는 문자(W는 문자와 일치) 사이의 위치를 일치시킵니다. . 이전 예를 살펴보겠습니다.
텍스트: 어제는 역사이고 내일은 미스터리이지만 오늘은 선물입니다.
정규식: bisb
결과: 어제 【is】 역사, 내일 【is】 수수께끼인데 오늘 【is】 선물입니다.
분석: 원문에서 is라는 단어 앞뒤에 공백이 있는데, 이는 bisb 패턴과 일치합니다(공백은 다음과 같습니다. 문자 중 하나를 단어로 분리하세요). History라는 단어에도 is가 포함되어 있습니다. 그 이유는 이 두 문자 중 어느 것도 b와 일치할 수 없기 때문입니다.
단어 경계가 일치하지 않으면 B가 사용됩니다. 예:
텍스트: 색상에 표시된 9자리 ID를 입력하세요.
정규식: B-B
결과: 【9자리】를 입력하세요. 색상에 표시된 ID - coded [pass-key].
분석: B-B는 9-에서 하이픈 앞뒤에 단어 경계가 아닌 하이픈을 일치시킵니다. digit 및 pass-key. 이므로 일치할 수 있지만 색상으로 구분된 하이픈 앞뒤에 공백이 있어 일치할 수 없습니다.
3. StringBoundary
단어 경계는 단어와 관련된 위치(단어의 시작, 단어의 끝, 전체 단어 등)를 일치시키는 데 사용할 수 있습니다. 문자열 경계는 비슷한 목적을 가지고 있지만 문자열과 관련된 위치(문자열의 시작, 문자열의 끝, 전체 문자열 등)를 일치시키는 데 사용됩니다. 문자열 경계를 정의하는 데 사용되는 메타 문자는 두 가지가 있습니다. 하나는 문자열의 시작을 정의하는 데 사용되는 ^이고 다른 하나는 문자열의 끝을 정의하는 데 사용되는 $입니다.
예를 들어 XML 문서의 적법성을 확인하려는 경우 법적 XML 문서는 모두 로 시작합니다.
텍스트:
<?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="ear"> </project>
正则表达式:^\s*<\?xml.*?\?>
结果:
分析:^匹配一个字符串的开头位置,所以^\s*将匹配一个字符串的开头位置和随后的零个或多个空白字符,因为标签前面允许有空格、制表符、换行符等空白字符。
$元字符符的用法除了位置上的差异外,与^用法完全一样。比如,检查一个html页面是否以