正则表达式问题
下面的表达式中:\b(\S+)://([^:]+)(?::(\S+))?\b对应匹配的字符串http://192.168.1.1:3210其中第一部分\b(\S+)://...
下面的表达式中:
\b(\S+)://([^:]+)(?::(\S+))?\b 对应匹配的字符串 http://192.168.1.1:3210
其中 第一部分\b(\S+)://我明白,匹配了http://
但是([^:]+)和(?::(\S+))?\b我不是很明白 ^表示文本第一个字符,但是不可能是字符:啊还多个+
第二个更不明白了 ?要在某个字符之后,他却放在最前面,很不理解,求大神指点 展开
\b(\S+)://([^:]+)(?::(\S+))?\b 对应匹配的字符串 http://192.168.1.1:3210
其中 第一部分\b(\S+)://我明白,匹配了http://
但是([^:]+)和(?::(\S+))?\b我不是很明白 ^表示文本第一个字符,但是不可能是字符:啊还多个+
第二个更不明白了 ?要在某个字符之后,他却放在最前面,很不理解,求大神指点 展开
3个回答
展开全部
\b的意思与表示匹配单词的开头与结尾 是 \<与\>的简写
(\S+):// 这一部分你的理解没错
([^:]+) 匹配的是除:之外的所有字符 用于匹配 192.168.1.1 也就是IP地址了
(?::(\S+))?\b 其中(?: ......) 该结构表示只匹配.......部分内容,不对内容进行捕获,也不分组
分解看就是(?::(\S+))表示匹配:3210 最后加个?表示 这一部分可有可无,因为这一部分匹配的文本是端口地址
最后的\b与前面的\b一起限定 整个地址是完整的(类似与一个单词的完整性)
(\S+):// 这一部分你的理解没错
([^:]+) 匹配的是除:之外的所有字符 用于匹配 192.168.1.1 也就是IP地址了
(?::(\S+))?\b 其中(?: ......) 该结构表示只匹配.......部分内容,不对内容进行捕获,也不分组
分解看就是(?::(\S+))表示匹配:3210 最后加个?表示 这一部分可有可无,因为这一部分匹配的文本是端口地址
最后的\b与前面的\b一起限定 整个地址是完整的(类似与一个单词的完整性)
展开全部
(?:pattern )
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。
[^xyz]
反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。
感觉这个表达式写得不严谨.
匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。
[^xyz]
反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。
感觉这个表达式写得不严谨.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我给你写个吧,你现在这个会存在匹配错误的情况。
\b(http|ftp|https)://([a-zA-Z\d\.]+)(?:\:(\d+)){0,1}\b
\b(http|ftp|https)://([a-zA-Z\d\.]+)(?:\:(\d+)){0,1}\b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询