문장 중간에 {{{a|b|c}}}가 있을 때 단순하게 찾으려면 {{{([^}}}])*}}} 이 정규식으로도 가능하다. {{{a|{b}|{c}}}}의 형태가 되면 제대로 찾지 못한다. {{3,}(.*?)\}{3,}를 사용하면 해결할 수 있다.
$question = "블라{{{{\(\cfrac{1}{2}\)|\(\cfrac{3}{2}\)}}}}블라블라{{{\(\cfrac{5}{7}\)|\(\cfrac{9}{223}\)}}}}블라라";
$matches = array();
preg_match_all("/\{{3,}(.*?)\}{3,}/", $question, $matches);
foreach($matches[0] as $cnt=>$match) {
echo 'match:'.$match."<br />";
$parts = explode("|", $match);
foreach($parts as $part) {
$part = str_replace(array('{{{','}}}'), '', $part);
echo 'part:'.$part."<br />";
}
}
php 정규식 - 괄호가 중복된 경우 {{{a|b|c}}}
댓글 없음