문제

나는 내가하고있는 preg_match regex와 혼란스러워하는 것 같아서 신선한 눈과 도움이 감사하겠습니다.

내 현재 Regex는 다음과 같습니다.

/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se

나는 숫자 입력과 콜론을 만들려고합니다 : (1,4) 선택 사항은 다음과 같습니다.

<!--menu:start--><!--menu:end-->

또는

<!--menu:start:(0,3)--><!--menu:end-->
도움이 되었습니까?

해결책

비 매칭 그룹과 동봉하여 선택 사항으로 설정하십시오. (?:...)?

/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se

다른 팁

이와 같이:

/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se

비과약 그룹을 추가했습니다. (?: ), 당신은 옵션이되고 싶은 부분 주위에 물음표로 접미사를 원합니다. (?:<optional content>)?

이것은 선택적 비 캡처 그룹을 사용합니다. (?: )? - 선택적 부분과 일치합니다 \d 대신에 [0-9] 숫자와 일치하려면 :

/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se

괄호 안의 숫자가 둘 이상의 숫자로 구성 될 수 있다면 대신이 숫자를 사용하십시오.

/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top