누구든지이 정규식에서 각 문자의 의미를 설명 할 수 있습니까?이 PHP 정규식 패턴은 무엇을 의미합니까?
...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)...
?
누구든지이 정규식에서 각 문자의 의미를 설명 할 수 있습니까?이 PHP 정규식 패턴은 무엇을 의미합니까?
...preg_match('/\{loop(?: name){0,1}=\${0,1}(.*?)\}/', $html, $code)...
?
이것은 아마도 템플릿 파서의 일부인 것처럼 보입니다.
\{loop(?: name){0,1}=\${0,1}(.*?)\}
--------------------
는 {loop name
또는 {loop
일치합니다. ?:
은 해당 하위 패턴을 matches 배열에 넣지 않도록 파서에 지시합니다. {0,1}
은 0 번 또는 1 번 나타날 수 있음을 표시합니다.
\{loop(?: name){0,1}=\${0,1}(.*?)\}
---------------
는이 텍스트 다음에 선택 사양 인 달러 기호 ($
) 다음 기호를, 동일 일치, 가장 가능성이 변수 이름은 {0,1}
의 }
인스턴스으로 마무리가로 대체 될 수 있었다 a ?
/
- 처음 시작하는 RegExp.
\{
- 일치하는 문자는 {
입니다. => [{
]
loop
이 - 단어 "루프"일치 => [{loop
]
?:
가 함께 - 그룹 여러 토큰 - 배열 => [{loop
]
(
* )
일치에 포함되지 않는다. 이를 통해 정량 그룹을 전체 그룹에 적용 할 수 있습니다. 캡처 그룹이 만들어집니다.
name
- 이전 정규식 0 시간 1 일치 - 단어 "이름"=>{loop(name)
{0,1}
매치.
=\$
- "= $"와 일치합니다. =>{loop(name)=$
{0,1}
- 이전 정규 표현식을 0 ~ 1 번 일치시킵니다.
(.*?)
- .
= 임의의 단어 문자. *?
앞의 토큰 중 0 개 이상 일치합니다. =>{loop(name)=$anything
\}
- 일치 문자는 }
입니다. =>{loop(name)=$anything}
/
- 끝의 RegExp.
Regex 자유 간격 'x'모드는 구조에 댓글을 달았습니다!
$re = '/
\{ # Match a literal "{".
loop # Match the literal text: "loop".
(?: # Begin non-capture group to
[ ]name # match the literal text: " name"
){0,1} # from zero to one times.
= # Match a literal "=".
\${0,1} # match literal "$" from zero to one times.
(.*?) # Capture in group $1 zero or more non-"\n".
\} # Match a literal "}".
/x';
'/]를 추가 할 때'[]'가 공백 문자를 대체합니까? – Alex
@Alex : 예. 자유 공간 모드에서는 이스케이프 또는 문자 클래스 내부의 모든 공백이 무시됩니다. 즉''[] ''대신에''\ "'(읽기 쉬운 IMHO)라고 말할 수있었습니다. – ridgerunner
너무 지역화 .. –
항목 : http://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world 좋은 정규식하는 분석 및 디버그 도구. – mario