테스트 사이트 - 개발 중인 베타 버전입니다

정규식(?) 패턴 해석 질문입니다. 채택완료

내가누구야 3년 전 조회 2,515
5 minute input rate 134000 bits/sec, 164 packets/sec
5 minute output rate 1320000 bits/sec, 150 packets/sec

$line = "5 minute input rate 134000 bits/sec, 164 packets/sec";
$pattern='/(?<time>\d+)\s+(?<time_unit>\w+)\s+(?<direction>\w+)\s+(.*?)(?<rate>\d+)\s+(?<rate_unit>\w+)(.*?)(?<packets>\d+)/i';</span></span>
<span style="font-size:11pt;"><span style="font-family:맑은 고딕;">preg_match($pattern,$line,$result);
</span></span><span style="font-size:11pt;"><span style="font-family:맑은 고딕;">

 

위의 패턴에 대한 해석을 좀 부탁드리고 싶습니다. (약간 상세하게...)

정규식안에 <> 이걸 넣는게 어떤 의미인지 진짜 궁금합니다.

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
리자
리자 Expert
3년 전

결과값을 보시면 쉽게 파익하실 수 있습니다.

 

Array

(
    [0] => 5 minute input rate 134000 bits/sec, 164
    [time] => 5
    [1] => 5
    [time_unit] => minute
    [2] => minute
    [direction] => input
    [3] => input
    [4] => rate 
    [rate] => 134000
    [5] => 134000
    [rate_unit] => bits
    [6] => bits
    [7] => /sec, 
    [packets] => 164
    [8] => 164
)

 

$result['time'] = 5

$result['time_unit'] = 'minute'

$result['direction'] = 'input'

$result['rate'] = 134000

$result['rate_unit'] = 'bits'

$result['packets'] = 164

 

</p>

<p><code>(?<time>\d+) 의 의미는 digit(숫자)값을 time 이라는 캡쳐 그룹 이름(Named Capturing Group)으로 지정하겠다는 의미죠.</code></p>

<p><code>사람이 이해하기 쉽게 말이죠.</code></p>

<p> </p>

<p><code>이 코드를 제거해 보면 이해 되실겁니다.</code></p>

<p><span style="white-space: pre-wrap; font-size: 0.875em;">?<time></span></p>

<p><span style="white-space: pre-wrap; font-size: 0.875em;">?<time_unit></span></p>

<p><code>?<direction></code></p>

<p><code>?<rate></code></p>

<p><code>?<rate_unit></code></p>

<p><code>?<packets></code></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

내가누구야
3년 전
답변 감사합니다. 진짜 정규식을 지대로 배워봐야 할까봐요..ㅠ.ㅠ
어렵고 헛갈리네요..ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인