1. (.*?)
2. (*)
3. #regex#
4. /regex/
가. 위의 기호는 무엇을 의미합니까?
B. #과 /는 다른 점은 무엇입니까?설명 정규식
나는 치트 - 시트를 가지고 있지만, 아직 풀지는 않았다. 내가 아는 것은 모든 문자를 얻습니다. ~입니다!
위의 패턴은 PHP preg_match 및 preg_replace에서 사용됩니다.
1. (.*?)
2. (*)
3. #regex#
4. /regex/
가. 위의 기호는 무엇을 의미합니까?
B. #과 /는 다른 점은 무엇입니까?설명 정규식
나는 치트 - 시트를 가지고 있지만, 아직 풀지는 않았다. 내가 아는 것은 모든 문자를 얻습니다. ~입니다!
위의 패턴은 PHP preg_match 및 preg_replace에서 사용됩니다.
.
matches any character (roughly).*?
은 소위 quantifier으로, 이전 토큰과 적어도 0 번 일치합니다 (일치를 완료하는 데 필요한만큼 자주 - 이는 게으르다. 따라서 ?
).(...)
capturing group을 만들면 정규식 또는 일치하는 항목에서 참조 할 수 있습니다. 이것들은 또한 |
교대의 범위를 정규 표현식의 일부로 제한하는 데 사용됩니다 (수학의 괄호가 선명해야 함)./.../
및 #...#
은 PHP에서 전체 정규 표현식의 구분 기호입니다. 기술적으로 그들은 정규식 구문의 일부가 아닙니다. 당신이 사용하는 구분자는 당신에게 달려 있지만 (\
은 사용할 수 없다고 생각합니다.) 주로 정규 표현식에서 어떤 문자를 이스케이프해야 하는지를 변경합니다. 그래서 /
은 대다수의 슬래시가 포함될 수있는 URI가 일치 할 때 나쁜 선택입니다. C++ 스타일의 끝 (end-of-line) 주석을 찾기 위해 다음과 같은 두 가지 varaints 비교 :
preg_match('/\/\/.*$/', $text);
preg_match('#//.*$#', $text);
후자는 당신이 정규식 자체 내에서 슬래시를 탈출하지 않는 한 쉽게 읽을 수 있습니다. #
또는 @
은 일반적으로 구분 기호로 사용되며 눈에 잘 띄며 텍스트에서 자주 사용되지는 않으므로 원하는대로 사용할 수 있습니다.
기술적으로이 구분 기호는 전혀 필요하지 않습니다. 이것은 대개 PHP의 Perl 유산의 대부분입니다 (Perl 정규 표현식에서는 구분되지만 문자열에는 포함되지 않습니다). 문자열을 사용하는 다른 언어 (예 : Java, C# 또는 PowerShell과 같은 기본 정규식 리터럴이 없기 때문에)는 구분 기호없이 잘 수행됩니다. PHP에서는 /a/i
같은 닫는 구분 기호 뒤에 옵션을 추가 할 수 있습니다 (대문자와 소문자를 구분하지 않음) a
또는 A
과 일치하지만 정규식 (?i)a
은 정확하게 동일하며 구분 기호가 필요하지 않습니다. 당신이 Regular-Expressions.info을 통해 읽을 시간이 걸릴
그리고 다음 번에, 아주 잘하고 철저하게 많은 것들을 설명하는 정규 표현식의 기초 및 advcanced 주제에 멋진 참조입니다. 이와 관련하여 PHP documentation을 살펴보십시오.
글쎄, 실제 질문 하나만 붙이세요.
다른 질문은 이미 답변되었으므로이 질문은 3 + 4 질문에 대한 답변입니다. Regexpes는 일반적으로 /로 구분됩니다./abc123/또는/foo | bar/i. PHP에서는 원하는 문자를 사용할 수 있습니다. /로 제한되지 않습니다. 예 : 예 : # 또는 %, #/usr/local/bin #.
D' oh, 나는 조이가 이미 모든 질문에 대답했다는 것을 몰랐다. –
나는 보통 불완전한 답변을 게시하지 않으려 고합니다.) – Joey
초 하나는 아마도 유효하지 않거나 본인은 맛에서 PHP 정규식과 정규 표현식에 차이점이 무엇인지 배워야한다 .. – Benoit
앞으로는 질문 당 하나의 질문을 고집하십시오. –