regex - 什么(?: do in a regular expression

标签 regex asp-classic

我遇到了一个我不完全理解的正则表达式 - 有人可以帮我破译它吗:

^home(?:\/|\/index\.asp)?(?:\?.+)?$

它用于 url 匹配,上面的示例匹配以下 url:
home
home/
home/?a
home/?a=1
home/index.asp
home/index.asp?a
home/index.asp?a=1

在我看来,括号内的问号(?:什么都不做。有人可以启发我。

所使用的正则表达式版本是 Classic ASP 提供的版本,如果有帮助的话,它正在服务器上运行。

最佳答案

(?:)创建一个非捕获组。它将事物组合在一起而不创建反向引用。

反向引用是您可以在表达式中引用的部分或可能的替换(通常通过说 \1$1 等 - 取决于风格)。在编程语言中使用正则表达式时,您通常也可以在之后从匹配中提取它们。使用的唯一理由 (?:)是为了避免创建新的反向引用,从而避免增加组号,并节省(通常可以忽略的)内存

关于regex - 什么(?: do in a regular expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138161/

相关文章:

javascript - 如何在 JavaScript 中调用/运行 Postman API

php - 可能跨越多行的电子邮件地址列表的正则表达式

html - PHP : replace character – followed with several non breaking spaces in wordpress "the_content"

mysql - 如何在mongodb和mysql中搜索搜索到的子字符串中的某个字符串?

Python:如何在 if 语句中使用 RegEx?

javascript - 下拉菜单中的 OnClick() 事件

visual-studio - 有没有人能够使用 Visual Studio 2005 或更高版本调试 asp 经典代码?

asp.net-mvc - 在 ASP.NET MVC 中,ASP classic 的服务器端包含什么?

asp-classic - ASP经典下载文件脚本

python - Urls.py 无法将 #(pound) 字符传递给 Django 中的 View ,