是否可以将这两个正则表达式加入一个?
-
23-10-2019 - |
题
我有以下两个 regular expressions
(顺便说一句)。
1. ^~/buying/(.*)\?(.*) => foo= group 1 baa= group 2.
2. ^~/buying/(.*) => foo= group 1 baa= nothing/empty/null/baibai
我要做的是,如果URL有一个问题标记,则将其分为两组。否则,只需将所有内容扔进第一组即可。
该订单对我很重要的原因是,如果我将它们转动,“?” Regex永远不会被解雇,因为#2表达式(上)会抓住一切。
所以..可以重新固定吗?
注意:我尝试过 使用此网站**帮助我调试/调整..但是我无法弄清楚。
**我与该站点没有隶属关系。
解决方案
尝试这个:
^~/buying/([^?]*)\??(.*)
([^?]*)
- 捕获不包含问号的第一组。
\??
- 可选问号。
(.*)
- 可选的第二组 - 可以为空。
其他提示
如何仅使第二部分可选(未经测试):
^~/buying/([^\?]*)(?:\?(.*))?
这 ?:
是否可以防止可选零件(您需要的零件加上问号)捕获。
编辑:由于贪婪,您需要使用否定的字符类[^?]或使其懒惰。 (由于降低了回溯性,因此首选被否定的字符类。)
您也可以这样加入,更容易理解。
^~/buying/(.*)(\?(.*))?$
不隶属于 StackOverflow