문제) 다음의 코드에서 주석만 얻으세요.
$str = "
function doSpellCheck(form, field) {
/* Make sure not empty * /
if (field.value == '') {
return false;
}
/ * Init * / var y = 2;
var winfowName = 'spellWindow';
var spellCheckURL = 'spell.cfm?formname=comment&fieldname='+field.name;
...
var x = 1; /* i Like
function doSpellCheck(form, field) {
/* Make sure not empty * /
if (field.value == '') {
return false;
}
/ * Init * / var y = 2;
var winfowName = 'spellWindow';
var spellCheckURL = 'spell.cfm?formname=comment&fieldname='+field.name;
...
var x = 1; /* i Like
x */
return false;
}
";
return false;
}
";
/* */ 주석문 안의 문자열만 가지고 오는 정규표현식을 알려주세요.
결과)
Make sure not empty
Init
i LIke x
Init
i LIke x
또는
i Like
x
|
댓글을 작성하시려면 로그인이 필요합니다.
프로그램
태그 필터 (최대 3개)
전체
개발자
소스
기타
mysql
팁자료실
javascript
php
linux
flash
정규표현식
jquery
node.js
mobile
웹서버
os
프로그램
강좌
썸네일
이미지관련
도로명주소
그누보드5
기획자
견적서
계약서
기획서
마케팅
제안서
seo
통계
서식
통계자료
퍼블리셔
html
css
반응형
웹접근성
퍼블리싱
표준화
반응형웹
홈페이지기초
부트스트랩
angularjs
포럼
스크린리더
센스리더
개발자톡
개발자팁
퍼블리셔톡
퍼블리셔팁
기획자톡
기획자팁
프로그램강좌
퍼블리싱강좌
댓글 27개
function doSpellCheck(form, field) {
/* Make sure not empty * /
if (field.value == '') {
return false;
}
/ * Init * / var y = 2;
var winfowName = 'spellWindow';
var spellCheckURL = 'spell.cfm?formname=comment&fieldname='+field.name;
...
var x = 1; /* i Like
x */
return false;
}
";
preg_match_all("`/\s*\*(.+)\*\s*/`sU", $str, $m);
print_r($m);
(
[0] => Array
(
[0] => /* Make sure not empty * /
[1] => / * Init * /
[2] => /* i Like
x */
)
[1] => Array
(
[0] => Make sure not empty
[1] => Init
[2] => i Like
x
)
)
preg_match_all("#/\s*\*(.+?)\*\s*/#s", $str, $m);
print_r($m);
Array
(
[0] => Array
(
[0] => /* Make sure not empty * /
[1] => / * Init * /
[2] => /* i Like
x */
)
[1] => Array
(
[0] => Make sure not empty
[1] => Init
[2] => i Like
x
)
)
? 는 바로 앞의 문자가 한개 있거나 없거나 이런뜻인데
.* 와 붙여서는 의미가 없는거 같아요
* 자체가 없거나 있거나
관리자님처럼 햇을 경우
$str = "
function doSpellCheck(form, field) {
/* Make sure not empty * / dd /* ddd*/
if (field.value == '') {
return false;
}
/ * Init * / var y = 2;
var winfowName = 'spellWindow';
var spellCheckURL = 'spell.cfm?formname=comment&fieldname='+field.name;
...
var x = 1; /* i Like
x */
return false;
}
";
이런경우 원하는 답이 안나와요
그래도 참고 삼아 코멘트는 놔두게습니다.
+? 게으른 수량자
입니다.
U 패턴 변경자와 같은 역할을 하는것 같습니다.
그러네요.
한개 배웟습니다.
근데 에디트플러스로 치환작업할 때 게으른수량자가 동작을 안하더라구요.
이걸 좀 써봐야 하는데
? 이렇게 시작하는거......
이건 아직 쓸일이 없어 공부하지 않았습니다.
예제 있음 좀 알려주세요.
http://kr.php.net/manual/en/regexp.reference.subpatterns.php
실제 어느 상황에서 사용해야 하는지는 잘 생각이 안나더라구요.
근데 문제라고 생각하면
그래서 임시로 ... ㅠㅠ
print_r($matches);
이미 문제의 답이 나왔으므로 전 주석만 출력 ㅠㅠ
후방(?<=)에 /* 이 문자열이 있고
전방(?=)에 */ 이 문자열이 있는
(.*?) 을 찾는 것 같습니다.
(?=\*/) 의 의미가 뭐에요?
(?<=) 와 (?=)는 패턴결과물에서 출력되지 않으며
(?<=) 는 패턴뒤를 보고 (?=) 는 패턴 앞을 본다는데
예제를 만들 수 없네요. 그냥 외우고 있어서..
(?<=) 는 후방탐색(lookbehind)
(?=) 는 전방탐색(lookahead) 라고 부른답니다.
저도 다 이해는 못했어요...
개발자 님과 동 시대에 산다는게 영광입니다.