즐길거리/책2011. 4. 1. 22:17


  정규식을 처음 접하는 초보자도, 이미 정규식을 써봤지만 가물가물한 개발자도 읽기 좋은 책이다. 더구나 책이 얇기 때문에 언제 어디서든 가지고 다니면서 읽을 수 있다. 실제로 본인은 걸어다니면서도 읽은 적이있다. 각 파트마다 핵심 기능을 짧고 굵게 설명했기 때문에 필요할 때 찾아보기가 쉽다.
  정규식을 조금씩 써봤지만 정말 정답이 없는 상황이 많은데 이 책을 읽고 나니 좀 더 유연하게 최선의 방법을 찾게 될거란 희망이 생겼다. 실제 개발할 때도 조금만 생각하면 정규식을 쓸 상황을 만들수 있고, 정규식을 쓰면 정말 편하게 해결한다. 그렇기 때문에 친구가 망설임없이 생일선물로 건네준 책이다.

'즐길거리 > ' 카테고리의 다른 글

미식견문록  (0) 2011.05.11
파라다이스  (0) 2011.04.07
리팩토링  (0) 2011.03.14
프로그래머가 몰랐던 멀티코어 CPU 이야기  (0) 2011.03.08
빨간클립한개  (0) 2011.01.28
Posted by 준피
Server-Side/PHP2010. 10. 12. 21:44
$pattern = '/([\xEA-\xED][\x80-\xBF]{2}|[a-zA-Z0-9])+/';
$str = 'abc!@하나둘셋#123';
echo $str;
preg_match_all($pattern, $str, $match);
$str = implode('', $match[0]);
echo $str;
==================
abc!@하나둘셋#123
abc하나둘셋123

한글과 영어 숫자를 제외한 나머지문자는 무시하게 된다.




Posted by 준피
Client-Side/Android2010. 2. 15. 21:01
안드로이드용 계산기 프로그램을 만들고 있습니다.
허접하지만 어느정도 구현이 되었구요.
계산기 프로그램을 만드는 중에 정규식을 쓸 일이 있었습니다.
정규식을 이용하면서 많은 공부가 되었습니다.


String s = "3+12X9-4/2";

정규식을 이용해서 String에서 숫자와 사칙연산 기호를 분리하려고 합니다.

처음에 썼던 방식은 다음과 같습니다.

String regExp = "[^0-9]";
String[] operands = s.split(regExp);

숫자가 아닌 것들을 구분자로 해서 operands에 3, 12, 9, 4, 2를 넣었습니다.


사실 사칙연산에서 쓰인 '+', '-', 'X', '/' 를 구분자로 하고 싶었는데 '-'가 문제가 되었습니다.

String regExp = "[+-X/]";

위에서 처럼 하면 '-'기호가 문제가 되어 파싱이 안되더군요.

escape 문제인가 싶어서

String regExp = "[+\-X/]";

위의 방법으로 해봤는데 역시나 안되었습니다.

한참을 고민하다가 다른 시도를 해봤는데

String regExp = "[+\\-X/]";
String[] operands = s.split(regExp);
위에 있는 정규식으로 하니 숫자만 파싱이 되더군요.

생각해보니 \\는 \로 인식이 되어서  \\-는 \-로 알아들을테니

'-'기호 문제가 해결되었습니다.

String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

위에서처럼 해도 마찬가지로 파싱이 되었습니다.

============================<결론>=============================
String s = "3+12X9-4/2";
String regExp = "[^0-9]";
String[] operands = s.split(regExp);

위와 같이 하면 숫자만 파싱할 수 있다.
아래와 같은 정규식을 써도 숫자만 파싱할 수 있다.
String regExp = "[+\\-X/]";
String regExp = "(-|X|/|\\+)";
String regExp = "[-X/+]";

'Client-Side > Android' 카테고리의 다른 글

java BigDecimal 사칙연산  (0) 2010.02.23
api key 확인  (0) 2010.02.19
String vs StringBuffer  (0) 2010.02.10
안드로이드 개발환경 세팅(JDK, Eclipse, Android SDK)  (0) 2010.02.06
출발!  (0) 2010.02.06
Posted by 준피