Joe*_*oel 15 php regex preg-replace preg-match
我似乎把自己与preg_match正则表达式混淆了,我正在做,所以新鲜的眼睛和帮助将不胜感激.
我目前的正则表达式如下:
/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
我想要输入数字和冒号,例如:(1,4)可选,所以它匹配:
<!--menu:start--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud)
要么
<!--menu:start:(0,3)--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud)
glm*_*ndr 31
使用非匹配组并将其设置为可选: (?:...)?
/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
Bli*_*ixt 28
像这样:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
我添加了一个非捕获组,(?: )
在您想要选择的部分周围,然后用问号加上后缀:(?:<optional content>)?
这使用可选的非捕获组 - (?: )?
- 匹配您的可选部分,而\d
不是[0-9]
匹配数字:
/<!--menu:start(?::\((\d),(\d)\))?-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
如果括号中的数字可以包含多个数字,请使用以下数字:
/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)