Regex
[Regex] Kotlin
[Regex] Kotlin
2017.12.01Kotlin정규식 간단히 만들기```ktprintln("12.345-6.A".split("""\.|-""".toRegex()))```그냥 ``kt "``를 하나만 적으면 escape를 위해 ``kt \\``를 사용해야 하기 때문에, 정규식을 사용하는 경우 ``kt """``를 사용하는 편이 좋다. 사실 이런 경우 굳이 정규식 쓰지 않아도 된다.```ktprintln("12.345-6.A".split(".", "-"))``` 간단한 정규식 예제```ktfun parsePath(path: String) { val regex = """(.+)/(.+)\.(.+)""".toRegex() val matchResult = regex.matchEntire(path) if (matchResult != null) { v..
[Regex] JS
[Regex] JS
2017.05.28JS Regexregex에서 "또는 or"을 표현하기 위해 ``js [(bar)(foo)]`` 처럼 사용하면 ``()``로 묶어도 한 char 씩 잘라서 인식하기 때문에 ``js ((bar)|(foo))``를 사용해야 한다.()가 추가되기 때문에 캡쳐링 그룹 인덱스가 틀려질 수 있다는 점에 주의한다. JS에서 정규 표현식은 보통 같은 문자열에 대해 반복해서 연산을 수행할 때 주목할 만한 성능상의 이점이 있다. 그래서 ``indexOf``를 쓰는 것 보다는 정규 표현식을 쓰는 것이 좋다. 정규식은 inline 보다는 변수에 저장해서(stored) 사용하는 것이 좋고,RegExp 객체를 사용하는 것 보다 literal을 사용하는 것이 좋다.또한, 반복문 안에 넣으면 계속 컴파일 되는 경우가 있으므로 반복문 ..
[Regex] Python
[Regex] Python
2017.02.23항상 시작 ^와 끝나는 $를 써주는게 좋다!!! 특히 $ 안붙여서 이어지는 문자가 있어도 match로 뜨는 경우가 있다. 정규표현식은 기본적으로 greedy하다는 것을 항상 명심한다. 긴 문자열을 집어 넣을 때, (page html tag 파싱이라던가.) 반드시 greedy/non-greedy를 신경써주어야 한다. JS에서는 $를 사용하지만, python에서는 \를 사용한다. notepad++에서는 둘 다 지원. $& : 일치하는 문자열 $` : 일치하는 부분의 앞부분 문자열 $' : 일치하는 부분의 뒷부분 문자열 $1, $2, $3... $n : n번 서브그룹 Python regular expression http://devdocs.io/python~3.6/library/re raw string은 기본..
IP parsing(+C), URL parsing 정규식 pattern
IP parsing(+C), URL parsing 정규식 pattern
2017.02.01직접 짜기 전에 org.springframework.web.util.UriComponentsBuilder 참조. IP, HOST, HTTP 등 패턴이 static 변수로 선언되어 있음. 또는 InetAddressValidator 같이 아예 유틸리티 클래스로 제공되고 있을 수 있다. 비슷한 계열이 몇 개씩 된다. ```java InetAddresses.isInetAddress() -- guava 530ms InetAddressUtils.isIPv4Address() -- httpclient 1146ms InetAddressValidator.getInstance().isValid() -- apache.commons 1573ms InetAddress.getByName() -- java.net 인데... ㄴ do..