<code>preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)</code>
这个正则中的|\s|()代表什么意思?有人知道吗
回复内容:
<code>preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)</code>
这个正则(本文来源gaodai#ma#com搞@@代~&码网
搞代gaodaima码
中的|\s|()代表什么意思?有人知道吗
我把每一部分都解释给题主吧。
<code class="lang-regexp">#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i</code>
两边的 #
是 PCRE 分隔符,最后一个 i
表示忽略大小写。
<code class="lang-regexp">(^|\s|\()</code>
字符串开头,或者有空格分隔,或者匹配一个左括号。这个部分是一个未命名分组。
<code class="lang-regexp">((http(s?)://)|(www\.))</code>
匹配 http://
或者 https://
或者 www.
。这个部分是一个未命名分组,其中又分成两个未命名分组。
<code class="lang-regexp">(\w+[^\s\)\<]+)</code>
匹配至少一个字母数字,之后再匹配至少一个不是空格、右括号、左尖括号的字符。这里又是一个未命名分组。
结束。
推荐两个debug正则的站点:
- debuggex 界面凑合,功能强大,支持多种语言的正则
- regexper 比较好看,只支持javascript的正则