正则表达式求解
String reg = "(?<=http\\://[a-zA-Z0-9]{0,100}[.]{0,1})[^.\\s]*?\\.(com|cn|net|org|biz|info|cc|tv)";
String regUrl = "(?<=(href=)[\"]?[\']?)[http://][^\\s\"\'\\?]*("
+ myDomain + ")[^\\s\"\'>]*";
对于以上两个正则表达式存在一些疑惑:
对于第一个正则表达式:
1、“[^.\\s]*?\\.”这一部分。.(点)不是表示除\n外的任意一个字符么,那\\s和\\.是什么意思。这个正则表达式是匹配URL当中的域名的,哪位大神可以具体分析一下不?
对于第二个正则表达式:
1、“[http://]”这一部分,[]不是匹配当中的一个字符吗,为什么这里当做匹配http://用也行得通了。
2、“[^\\s\"\'\\?]”这一部分,\\?又是什么意思。这个正则表达多是匹配网页中的链接的,也请分析一下。
先谢过了~~~
------解决方案--------------------.表示任意,\\s表示空格啊tab啊那些符号, \\.就是把‘.’转义了,表示只能是‘.’这个符号了;
java中\\就是转义符,\\?就是匹配‘?’了,他就没有0个或者1个的意思了。
[]还有个意思也是转义 比如[.]=\\.
------解决方案--------------------\就是转义的意思啊,把.给转义了,要不你想想如果匹配“.”该怎么弄?
[http://]这句就是匹配一个味http://的字符串,并不是一个字符
[^\\s\"\'\\?]
\s匹配任何空白字符,包括空格、制表符、换页符等等
然后加上一个"
加上一个'
加上一个\?匹配前面的子表达式零次或一次。
------解决方案--------------------[aeiou]正则表达式中的[]里面的内容是指匹配其中的任意一个字符。你用aeiou就都能匹配。
用abcde则就是匹配a e。[.] .不转义就是代表匹配任意字符所以[.]就是匹配任意一个字符