하나의 소문자 주위에 3개의 대문자가 있다고 합니다.
소스 코드에 주석으로 나와있는 다량의 문자열들 사이에서 해당 값을 찾아내면 되는 문제입니다.
이 문제는 정규표현식을 이용해서 해결할 수 있습니다.
예를 들어, AAAaAAA 이렇게 되어 있으면 가운데에 있는 a값이 찾고자 하는 문자입니다.
정규표현식으로 만들면 [A-Z]{3}[a-z]{1}[A-Z]{3} 이렇게 되는데 해당 방식대로 하면 많은 값들이 나오게 됩니다.
[A-Z]{3}을 앞뒤로 해도 그 앞뒤로 다시 대문자가 올 수 있기 때문입니다.
그래서 [a-z]{1}[A-Z]{3}[a-z]{1}[A-Z]{3}[a-z]{1} 앞뒤로 소문자를 하나씩 넣어주면 해결이 됩니다.
python에서 정규표현식을 사용하려면 re 모듈을 이용하면 됩니다.
1 2 3 4 5 6 7 | import urllib.request import re html = urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/equality.html").read().decode() data = re.findall("<!--(.*?)-->", html, re.DOTALL)[-1] print([ payload[4] for payload in re.findall("[a-z]{1}[A-Z]{3}[a-z]{1}[A-Z]{3}[a-z]{1}",data) ]) | cs |
'Code Challenge > pythonchallenge.com' 카테고리의 다른 글
[pythonchallenge] level 4 linkedlist (0) | 2018.12.13 |
---|---|
[pythonchallenge] level 2 ocr (0) | 2018.12.13 |
[pythonchallenge] level 1 map (0) | 2018.12.12 |
[pythonchallenge] level 0 (0) | 2018.12.12 |