프로그래밍 기초 줄의 끝 ($)

행의 시작 부분과 마찬가지로 줄 끝이라는 위치에 일치하는 패턴을 작성하려면 메타 문자의 하나 인 "$"를 사용합니다.

형식은 다음과 같습니다.

"패턴 $"

패턴에는 "$"를 제외한 패턴을 설명합니다.

아이디어는 패턴이 "abc"인 경우 대상 문자열에 "abc"라는 문자열이 존재하는지 여부를 검사하지만 패턴이 "abc $"인 경우에는 대상 문자열 중 에 "abc"+ "줄 끝"가 존재하는지 여부를 확인합니다. 결과적으로 행의 마지막에 "abc"가 존재하는 문자열과 일치하는 것입니다.

구체적인 예로 생각해보십시오. "abc def"와 "def abc"라는 두 개의 문자열에 대해 패턴을 "abc"로 지정한 경우에는 두 문자열에 "abc"가 포함되어 있기 때문에 모두 일치합니다 .

abc def ○ def abc

이에 대해 패턴을 "abc $"라고 기술하면 행의 끝에 위치에 "abc"가있는 경우에만 매치합니다. 따라서 "abc def"는 일치하지 않지만 "def abc"에는 일치합니다.

× abc def ○ def abc

구체적으로는 다음과 같이 설명합니다.

String str = "abc def"; String regex = "abc $"; Pattern p = Pattern.compile (regex); Matcher m = p.matcher (str); if (m.find ()) { System.out.println ( "일치했습니다."); } else { System.out.println ( "일치하지 않습니다"); }

위의 경우는 일치하지 않습니다.

멀티 라인 모드

"^"와 마찬가지로 "$"도 기본적으로 줄 끝 기호의 직전에는 매치하지 않고 문장의 마지막에만 매치하지 않습니다. 줄 끝 문자의 직전에 매치시키고 싶은 경우에는 MULTILINE 모드를 사용하십시오.

구체적인 예로 생각해보십시오. "abc ¥ ndef"라고 문자열에 대해 패턴을 "abc $"로 지정하면 기본적으로 줄 끝 기호를 무시하기 위해 일치하지 않습니다. MULTILINE 모드를 활성화 한 경우에는 줄 끝 기호가 유효 "abc"와 "def"라는 2 개의 행에 대해 조사하게되므로 일치합니다.

기본 상태 : × abc ¥ ndef 멀티 라인 모드 활성화 : ○ abc ¥ ndef

구체적으로는 다음과 같이 설명합니다.

String str = "abc ¥ ndef"; String regex = "abc $"; Pattern p = Pattern.compile (regex, Pattern.MULTILINE); Matcher m = p.matcher (str); if (m.find ()) { System.out.println ( "일치했습니다."); } else { System.out.println ( "일치하지 않습니다"); }

 

샘플 프로그램

그럼 실제로 시도합니다.

import java.util.regex.Pattern; import java.util.regex.Matcher; class JSample2_1 { public static void main (String args []) { String str1 = "abc def"; String str2 = "def abc"; String str3 = "abc ¥ ndef"; String regex1 = "abc $"; Pattern p1 = Pattern.compile (regex1); String regex2 = "abc $"; Pattern p2 = Pattern.compile (regex2, Pattern.MULTILINE); System.out.println ( "패턴 :"+ regex1); check (p1, str1); check (p1, str2); check (p1, str3); System.out.println ( "¥ n 멀티 라인 모드로 변경 ¥ n"); System.out.println ( "패턴 :"+ regex2); check (p2, str1); check (p2, str2); check (p2, str3); } private static void check (Pattern p, String target) { Matcher m = p.matcher (target); if (m.find ()) { System.out.println ( "○"+ target); } else { System.out.println ( "×"+ target); } } }

 컴파일을하신 후 실행 해 봅니다.

기본 상태입니다 그리고 문자열의 끝에 "abc"가있는 경우에만 일치하지만 멀티 라인 모드를 사용하면 행의 마지막에 "abc"가있는 경우에 일치합니다.

이 글을 공유하기

댓글

Designed by JB FACTORY