REGEX 옵션 그룹?
-
06-07-2019 - |
문제
나는 내가하고있는 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
제휴하지 않습니다 StackOverflow