正则表达式可选组?

发布于 2024-07-25 01:48:30 字数 374 浏览 4 评论 0原文

我似乎对我正在做的 preg_match 正则表达式感到困惑,所以新鲜的眼光和帮助将不胜感激。

我当前的正则表达式如下:

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

我希望使数字输入和冒号例如:(1,4)可选,因此它会匹配:

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

<!--menu:start:(0,3)--><!--menu:end-->

I seem to have confused myself with a preg_match regex I'm doing, so fresh eyes and help would be appreciated.

My current regex is as follows:

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

I am looking to make the number input and colon e.g. :(1,4) optional, so it would match:

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

or

<!--menu:start:(0,3)--><!--menu:end-->

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦中的蝴蝶 2024-08-01 01:48:30

用不匹配的组括起来并将其设置为可选:(?:...)?

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

Enclose with a non matching group and set it to optional : (?:...)?

/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se
梦毁影碎の 2024-08-01 01:48:30

像这样:

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

我在您想要可选的部分周围添加了一个非捕获组 (?: ),然后用问号作为后缀: (?:< ;可选内容>)?

Like this:

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

I've added a non-capturing group, (?: ), around the part you want to be optional, and then suffixed it with a question mark: (?:<optional content>)?

不爱素颜 2024-08-01 01:48:30

这使用可选的非捕获组 - (?: )? - 来匹配您的可选部分,并且还使用 \d 而不是 [0-9 ] 匹配数字:

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

如果括号中的数字可以包含多个数字,请改用此数字:

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

This uses an optional non-capturing group -- (?: )? -- to match your optional part, and also \d instead of [0-9] to match digits:

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

If numbers in parentheses can consist of more than one digit, use this one instead:

/<!--menu:start(?::\((\d+),(\d+)\))?-->(.*?)<!--menu:end-->/se
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文