5 minute input rate 134000 bits/sec, 164 packets/sec
5 minute output rate 1320000 bits/sec, 150 packets/sec
Copy
$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';
preg_match($pattern,$line,$result);
위의 패턴에 대한 해석을 좀 부탁드리고 싶습니다. (약간 상세하게...)
정규식안에 <> 이걸 넣는게 어떤 의미인지 진짜 궁금합니다.
답변 1개 / 댓글 1개
채택된 답변
+20 포인트
2021-11-09 (화) 12:20:22
결과값을 보시면 쉽게 파익하실 수 있습니다.
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
Copy
(?<time>\d+) 의 의미는 digit(숫자)값을 time 이라는 캡쳐 그룹 이름(Named Capturing Group)으로 지정하겠다는 의미죠.
사람이 이해하기 쉽게 말이죠.
이 코드를 제거해 보면 이해 되실겁니다.
?<time>
?<time_unit>
?<direction>
?<rate>
?<rate_unit>
?<packets>
답변에 대한 댓글 1개
내가누구야
2021-11-09 (화) 12:24:17
답변을 작성하려면 로그인이 필요합니다.
어렵고 헛갈리네요..ㅠㅠ