首页 > 代码库 > 正则表达式问题:如何理解/href\s*=\s*(?:"(?<1>[^"]*)"|(?<1>\S+))/(转载)

正则表达式问题:如何理解/href\s*=\s*(?:"(?<1>[^"]*)"|(?<1>\S+))/(转载)

ms-help://MS.VSCC/MS.MSDNVS.2052/jscript7/html/jsjsgrpregexpsyntax.htm
该文虽有解释, 但没有样例,对我这样的初学者来说很难理解

在msdn上看到:href\s*=\s*(?:"(?<1>[^"]*)"|(?<1>\S+)),该正则表达式匹配字符串中的形如href="http://www.mamicode.com/..."的链接。msdn没有解释该表达式的语法, 以下是我初步的问题

1. (?:"(....\S+))这一部分是什么意思

在msdn上说明(?:pattern)为:
   "匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“或”字符 (|) 组合模式部件的情况很有用。例如,“industr(?:y|ies)”这一表达式比“industry|industries”更经济。

以上这些话很难理解, 那么在这里pattern是"(?<1>[^"]*)"|(?<1>\S+), 该怎么解释呢

同样msdn对(pattern)(?=pattern)(?!pattern)之类的解释,我也不太理解

2.?:表示匹配但不获取,如果不用,会多获取几个匹配,占用资源。
?<1>引用名称,即表示该获取可以用$1引用,