Gra*_*ham 16 regex asp-classic
我遇到了一个我不完全理解的正则表达式 - 有人可以帮我解释它:
^home(?:\/|\/index\.asp)?(?:\?.+)?$
Run Code Online (Sandbox Code Playgroud)
它用于url匹配,上面的示例匹配以下url:
home
home/
home/?a
home/?a=1
home/index.asp
home/index.asp?a
home/index.asp?a=1
Run Code Online (Sandbox Code Playgroud)
在我看来,括号内的问号(?:
没有做任何事情.有人可以启发我.
正在使用的正则表达式版本是Classic ASP提供的版本,如果有帮助的话,它正在服务器上运行.
Mat*_*nen 21
(?:)
创建一个非捕获组.它将事物组合在一起而不创建反向引用.
反向引用是您可以在表达式中引用的部分或可能的替换(通常通过说\1
或$1
等 - 取决于风味).在编程语言中使用正则表达式时,通常也可以从匹配中提取它们.使用的唯一原因(?:)
是避免创建新的反向引用,这可以避免增加组号,并节省(通常可忽略不计的数量)内存
这是一个非捕获组,其本质上与using相同(...)
,但是没有保留内容(不能用作反向引用)。
如果你正在做这样的事情:(abc)(?:123)(def)
你会得到abc
中$1
和def
的$2
,但123
将只匹配。
归档时间: |
|
查看次数: |
9105 次 |
最近记录: |