자연어 처리를 하면서 특정 패턴을 제거해야할 때 정규 표현식을 활용합니다.
특히 .*?\ 에 대하여 이해를 정확히 하고 사용하는 중요한데, 각각의 뜻은 다음과 같습니다.
- .: 임의의 한 문자
- *: 앞에 있는 문자가 0번 이상 반복됨을 나타냅니다.
- ?: 가능한 한 적게 일치하도록 합니다.
- \: 이스케이프 문자로, 다음에 오는 문자를 특수 문자가 아닌 일반 문자로 인식하도록 합니다.
따라서 .*?\는 임의의 문자열을 가능한 한 적게 일치하도록 찾습니다. .은 어떤 문자든 가능하고, *는 이전의 문자(즉, .)가 0번 이상 반복될 수 있음을 의미합니다. 그러나 ?가 있으므로 가능한 한 적게 일치하도록 하기 때문에 최소한의 문자열만 일치하게 됩니다. 마지막으로 \는 ?를 특수 문자가 아닌 일반 문자로 인식하게 합니다.
즉, .*?\는 최소한의 문자열을 일치시키는 "최소 매칭(non-greedy)"을 수행합니다. 예를 들어 .*?abc는 "abc"가 나오기 직전의 최소한의 문자열만 일치시킵니다. 만약 .*abc와 같이 "greedy" 매칭을 수행한다면 "abc"가 마지막으로 나오기 직전까지의 모든 문자열을 일치시키려 할 것입니다.
'개발' 카테고리의 다른 글
빅오에 대한 개념을 일깨워준... 백준 (0) | 2023.12.18 |
---|---|
python의 datetime 자바에서는 localtime이라고 보면 되는구만!!! (0) | 2023.12.17 |
파이썬만 하다보니 자바 코테할때 스트림이 편해보이는것은 나만의 착각인건가..하는 제목으로 (0) | 2023.12.17 |
[자바] 기초부터 다시 알고리즘 공부해보쟝... (0) | 2023.12.17 |
[MARIADB] 마리아 DB 프로시저(Procedures) 매개변수 입력 삽질 로그 (0) | 2023.05.26 |