정오표

원서인 『Regular Expressions in 10 Minutes』의 정오표는 여기입니다.

4쇄

 ‘분석’ 부분 중,
\U2$2E\  –> \U$2\E 

2쇄

38쪽 예문의 분석 부분 (신재동 님)

앞서 사용한 패턴에서는 [0-9A_Fa-f]를 여섯 번 반복했었다. 여기서는 [0-9A_Fa-f] 대신 [[:xdigit:]]를 사용했는데, 결과는 똑같다.

앞서 사용한 패턴에서는 [0-9A-Fa-f]를 여섯 번 반복했었다. 여기서는 [0-9A-Fa-f] 대신 [[:xdigit:]]를 사용했는데, 결과는 똑같다.

49쪽: 정확한 구간 찾기의 ‘분석’ 부분(정무진 님)
이 포직스 분류를 여섯 번 반복함을 뜻한다.

         이 포직스 클래스를 여섯 번 반복함을 뜻한다.

49쪽 외: 최댓값, 최솟값에 대한 문의가 많아 정오표에 따로 명기합니다.
최댓값, 최솟값

         최대값, 최소값이 혼용해 쓰이나 최댓값, 최솟값이 옳은 표현임을 알립니다.

         참고링크: 인사이트 블로그 오탈자 글, 국립국어원

78쪽 본문 6번째 줄 각주1 보충 설명

정규 표현식에 전달된 플래그(flag)에 따라 다르게 동작할 수도 있다.

현재 flag 매개변수로 들어가는 상수는 PREG_OFFSET_CAPTURE 하나밖에 없는데, 이 상수를 넘겨 주면, 일치한 문장뿐만 아니라 위치도 함께 반환한다. 위치 정보를포함하기 때문에 배열 자체가 2차원 배열이 되는데, 다음 예제를 보면 이해하기 쉽다.

코드
$subject = “abcdef”;
$pattern = ‘/abc([\w]*)/’;
preg_match($pattern, $subject, $matches);
print_r($matches);

결과
Array
(
[0] => abcdef    <- 전체 패턴
[1] => def         <- 첫 번째 일치한 하위표현식
)

코드$subject = “abcdef”;
$pattern = ‘/abc([\w]*)/’;
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

결과Array
(
[0] => Array                  <- 전체 패턴
(
[0] => abcdef       <- 일치한 내용
[1] => 0                <- 전체 패턴의 위치
)

[1] => Array                  <- 첫 번째 일치한 하위표현식
(
[0] => def            <- 일치한 내용
[1] => 3               <- 일치한 내용의 위치
)
)

여기까지 1

쇄 오탈자_2쇄에 모두 반영됨.

v쪽 목차에서 4.4절
4.4 포직스 문자 분류 사용하기

4.4 포직스 문자 클래스 사용하기

59쪽 아래서 7번째 줄(윤성준 님)
<xml version=”1.0″?>

<?xml version=”1.0?>

102쪽 예문 세 번째, 네 번째 줄(김호성 님)
33333

33333

44444-444

44444-444

43쪽 note 첫 번째 줄(유형근 님)
잘 살펴보면 [\w.]+가 아니라 \w.를 사용했다

잘 살펴보면, [\w.]+가 아니라 \w+를 사용했다

6 thoughts on “정오표

  1. 표현식 오류

    대상 문자열 ===============================
    123-456-7890
    (123)456-7890
    (123)-456-7890
    정규표현식 =================================
    (()?d{3}(?(1))|-)d{3}-d{4}

    위 표현식에 오류가 있는것 같습니다.
    여러 언어로 확인해 본 바..
    본문에서는 (123)-456-7890 가 제외된다고 하였으나
    위 표현식으로는 포함됩니다.

    http://gskinner.com/RegExr/ 에서 확인해 보셔도 됩니다

    1. raccoony

      같은 사이트에서 Copy & Paste만 했을 뿐인데,
      (123)-456-7890이 일치하지 않게 나왔습니다.

      다음 링크에 올려두었습니다.
      http://regexr.com?319fa

  2. 표현 식 류오

    P.84 의 분석 부분에서
    U2$2E -> U$2E 바뀌어야 할 것 같습니다.

    1. eunbyul Post author

      안녕하세요! 해당 부분은 원서를 살펴보니, U2$2E 가 아닌, U$2E 입니다.
      정오표에 올려놓겠습니다. 감사합니다.

  3. sharpen

    http://www.regexr.com/v1/ 에서 확인해 보니 결과가 이상합니다.
    [p101]
    이 경우 4번째 (123-456-7890 에서 123-456-7890 도 정규표현식 조건으로 포함됩니다.
    이게 맞는 것인지 확인 부탁 드립니다.

    사용한 정규 표현식: (()?d{3}(?(1))|-)d{3}-d{4}

    [예문]
    123-456-7890
    (123)456-7890
    (123)-456-7890
    (123-456-7890
    1234567890
    123 456 7890

    1. jogamza Post author

      해당 내용 확인하고 메일로 답변드리겠습니다!

Comments are closed.