我有一个正则表达式:
^https?:path\?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
查询参数:
?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
如何将"gl"设置为可选?
我有一个正则表达式:
^https?:path\?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
查询参数:
?id=([a-zA-Z0-9._]+)&?.*&gl=([^&|\n|\t\s]+)&?.*$
如何将"gl"设置为可选?
您可以使用
^https?:path\?id=([^&]+)(?:.*?(?:&gl=([^&\s]+).*)?)?$
请看regex demo.
Details:
^
-字符串的开始http
-固定的http
字符串s?
-可选s
个字符:path\?id=
-固定:path?id=
字符串([^&]+)
-组1:&
个字符以外的一个或多个字符(?:.*?(?:&gl=([^&\s]+).*)?)?
- an optional sequence of
.*?
-除换行符之外的任何零个或多个字符应尽可能少(?:&gl=([^&\s]+).*)?
- an optional sequence of
&gl=
-固定字符串([^&\s]+)
-组2:除空格和&
之外的一个或多个字符.*
-除换行符之外的任何零个或多个字符,尽可能多$
-字符串末尾.