-
매칭 될 문자(string)를 지정 or 제외하는 방법
정규식 설명 [qwe] q,w,e 중 하나이면 일치 [^qwe] q,w,e를 제외한 다른 글자면 일치 [a-zA-Z] (a~z || A~Z) 중 하나라면 일치 [a-c[f-h]] (a~c || f~h) 중 하나라면 일치 (합집합) [a-z&&[qwe]] a~z까지 중 q,w,e 중 하나라도 있다면 일치 (교집합) [a-z&&[^we]] a~z까지 중 w,e를 제외한 문자 중 하나라면 일치 (차집합) [a-z&&[^c-f]] a~z까지 중 c~f를 제외한 문자 중 하나라면 일치 (차집합)
미리 정의된 문자(string)를 지정하는 방법
정규식 설명 , 임의의 문자 (단 \는 포함되지 않는다.) \d 숫자 문자 [0-9] \D 숫자 문자가 아닌것 [^0-9] \s 공백 문자 [\t, \n, \f, \r] \S 공백 문자가 아닌것 [^\s] \w 알파벳 단어 문자 [a-zA-Z_0-9] \W 알파벳 단어 문자가 아닌것 [^\w] (?!) 대소문자를 구별하지 않음 \ 확장 문자로 \ 다음 일반 문자가 오면 특수문자로 취급, \ 다음 특수문자가 오면 그 문자 자체를 의미함
수량 확인
Greedy Reluctant Possessive 설명 a? a?? a?+ a가 없거나 한번 나옴 [a-z]* [a-z]*? [a-z]*+ a~z 중 해당되는 문자가 없거나 한번 이상 나옴 a+ a+? a++ a가 한번 또는 여러번 나옴 a{n} a{n}? a{n}+ a가 정확하게 n번 나옴 a{n,} a{n,}? a{n,}+ a가 n번 이상 나옴 a{n,m} a{n,m}? a{n,m}+ a가 n번 이상 m번 이하로 나옴 0 1 2+ n~m ? 매치됨 매치됨 * 매치됨 매치됨 매치됨 + 매치됨 매치됨 {n,m} 매치됨 Greedy : 입력된 문자열 전체를 읽어 확인한 뒤 한자씩 빼면서 끝까지 확인
Reluctant : 입력된 문자열에서 한글자씩 확인해 나가며 마지막에 전체 문자열을 확인
Possessive : 입력된 전체 문자열을 확인
경계조건
정규식 설명 ^ 행의 시작 $ 행의 끝 [] 문자의 집합이나 범위를 나타냄 {} 횟수 또는 범위를 나타냄 () 소괄호 안의 문자를 하나의 문자로 인식 | 패턴 안에서 or 연산을 수행할 때 사용
위 정규식으로만 했을때의 간단한 예제
fun call() { val digits = "0-9" val hexDigits = "A-Fa-f" val sign = "+-" val string = "+1234 -FFFF not-a-number" val hexNumberRegex = Regex("[$sign]?[$digits$hexDigits]+") val regex = """[$sign]?[$digits$hexDigits]+""".toRegex() regex.findAll(string).let { for (match in it) println(match.value) } } // 출력값 // +1234 // -FFFF // -a // be
'Android' 카테고리의 다른 글
Android Standby Bucket (0) 2022.07.01 Android - Safety Net API (에뮬레이터 감지 및 루팅 감지) (0) 2022.02.11 Component - Service (0) 2021.10.24 Component - Activity (0) 2021.10.01 scope storage 간단하게 정리 (0) 2021.07.08