[파이썬] 문자열의 정규식 매칭 양성 룩어헤드

정규식(Regular Expression)은 문자열 패턴을 정의하고, 검색, 추출, 대체 등의 작업을 수행하는 데에 사용되는 강력한 도구입니다. 이번 블로그 포스트에서는 특히 정규식의 양성 룩어헤드(Positive Lookahead)에 대해 알아보겠습니다. 양성 룩어헤드는 패턴의 일치 여부를 확인하면서 조건을 만족할 때만 매칭되는 특별한 구문입니다.

양성 룩어헤드의 기본 구문

양성 룩어헤드는 (?=)로 표현되며, 기본적으로 다음과 같은 형태를 가집니다:

(?=pattern)

여기서 pattern은 조건으로 확인하고자 하는 정규식 패턴을 나타냅니다. 예를 들어, 양성 룩어헤드를 사용하여 ‘apple’이라는 단어 앞에 ‘juicy’가 있는 경우만 일치시키는 정규식은 다음과 같습니다:

(?=juicy)apple

양성 룩어헤드의 활용 예시

양성 룩어헤드는 다양한 상황에서 유용하게 사용될 수 있습니다. 몇 가지 예시를 살펴보겠습니다.

이메일 주소 유효성 검사

이메일 주소를 정규식으로 유효성 검사할 때, “@” 기호 이전에는 최소한 한 글자 이상의 문자가 와야 한다는 조건을 추가하고 싶을 수 있습니다. 이때 양성 룩어헤드를 사용할 수 있습니다:

(?=\w)^\w+@\w+\.\w+$

위의 정규식 패턴은 한 글자로 시작하는 이메일 주소만 일치시킵니다.

비밀번호 강도 검사

비밀번호를 검사하여 특정 조건을 충족하는지 확인할 때, 양성 룩어헤드를 사용할 수 있습니다. 예를 들어, 비밀번호에 최소한 하나의 대문자, 소문자, 숫자, 특수문자가 포함되어야 한다는 조건을 추가하고 싶다면 다음과 같이 정규식을 작성할 수 있습니다:

(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*])\w+

위의 정규식은 대문자, 소문자, 숫자, 특수문자가 모두 포함된 비밀번호에 대해 일치합니다.

URL 검사

URL의 유효성을 확인할 때, 양성 룩어헤드를 사용하여 ‘http://’ 또는 ‘https://’로 시작하는 URL만 일치시킬 수 있습니다. 예를 들어:

(?=https?://)https?://\w+\.\w+(/[^\s]*)?

위의 정규식 패턴은 ‘http://’ 또는 ‘https://’로 시작하는 URL에 대해 일치합니다.

마치며

정규식의 양성 룩어헤드는 매우 유용한 도구로, 복잡한 패턴 매칭을 수행하고 특정 조건을 충족하는 문자열을 선택적으로 매칭시킬 수 있습니다. 이번 포스트에서는 양성 룩어헤드의 개념과 몇 가지 활용 예시에 대해 알아보았습니다. 정규식의 다양한 기능을 익히고 유연하게 활용하여 문제를 해결하는 데에 활용할 수 있길 바랍니다.