我需要REGEX表达式的帮助(用于分析(。不确定如何处理需求。
以下是一个URL示例:
/a.html?ref=aa&project=11&utm=bb
该URL将在中间有&project=XX
,但可能根本不存在&project
。。
要求:
- 我希望正则表达式仅对特定项目=XX为正(例如,仅当XX等于11、12或13时(,而对所有其他值(项目=22(为负
- 其前面的参数(以下示例中的
?ref
(是必需的 - 之后的任何参数(
&utm
(都是可选的
例如:
- 罚款:/a.html?ref=aa&项目=11&utm=bb
- 罚款:/a.html?ref=aa&utm=bb
- 不好:/a.html?ref=aa&项目=22&utm=bb
我该如何处理?
我试过这个,它有点工作(但只是没有额外的utm参数(:
/a.html?ref=aa(&project=(11|12|13))?$
我试过了,但在使用utm参数时不起作用:
/a.html?ref=aa(&project=(11|12|13))?(&utm=.*)?$
谢谢意大利
您没有说明您使用的平台,但如果您希望它们与大多数平台上的文字字符匹配,则需要转义前斜杠和问号:
/a.html?ref=aa(&project=(11|12|13))?(&utm=.*)?$
您可能还想尽量减少utm
块中的捕获,以防后面出现其他您不想要的东西:
/a.html?ref=aa(&project=(11|12|13))?(&utm=.*?)?$
您可以使用字符类[123]
将1,2或3与单个可选组进行匹配,并注意转义点以进行字面匹配。
/a.html?ref=aa(&project=1[123])?&utm=.*$
模式匹配:
/a.html
匹配/a.html
?ref=aa
匹配?ref=aa
(
捕获组&project=1[123]
匹配&project=1,然后是1,2或3
)?
关闭非捕获组使其成为可选组- CCD_ 16匹配&utm=后面跟行的其余部分
Regex演示