我所遇到的正则表达式,我不完全理解 - 有人可以帮助我在它破译:
^home(?:\/|\/index\.asp)?(?:\?.+)?$
它是在URL匹配中使用和上述的例子下面的网址匹配:
home
home/
home/?a
home/?a=1
home/index.asp
home/index.asp?a
home/index.asp?a=1
这在我看来,括号内的问号(?:
不要做任何人可以告诉我。
使用正则表达式的版本与传统ASP提供的一个,如果这有助于在所有正在运行在服务器上。
(?:)
创建一个非捕获组 。 这组东西放在一起,而无需创建一个反向引用。
反向引用是可以参考的表达或可能更换的部分(通常说\1
或$1
等-这取决于味)。 您也可以通常在编程语言使用正则表达式时,每场比赛都能提取出来之后。 使用的唯一原因(?:)
是避免创建一个新的反向引用,这避免了增加的组号,并保存(的通常可忽略不计的量)存储器
这是一个非捕获组,其本质是一样的使用(...)
但内容不保留(不作为一个反向引用)。
如果你正在做这样的事情: (abc)(?:123)(def)
你会得到abc
在$1
和def
在$2
,但123
将只匹配。
它真的很容易每括号将在内存中创建一个变量,所以你可以使用括号值之后所以不把它保存在内存中只是把? 在这样的括号(?:),然后填写剩下的,因为你需要。 就是这样,没有别的