正则表达式初学习
2016/3/15
今天学到的几个元字符:\b,表示匹配到单词的开始或者结束;
\w,匹配到数字或者汉字或者下划线或者字母;\s,表示匹配空白符,所谓空白符包括换行符、制表符、空格等。.点,匹配换行符以外的任意字符;\d,匹配数字。
然后还有+,表示匹配到一次或者多次,至少是一次,*匹配到多次,可以是零次。
换行符就是’\n’。
今天就搞到这里,十一点半,睡觉,养精蓄锐,明天工作呢。
2016/3/20 10:15
卧槽,写的东西不见了,补上。
自己学正则,最不爽的是没有资源,即使看不懂不要紧,一点点啃,总会有顿悟的时候。
我看正则的资源是http://www.jb51.net/tools/zhengze.html。
精简,入门足够了。
我学正则是,为了用正则匹配请求的网页报文中的url,比如报文中的url有类似”http://www.baidu.com“的,也有类似(https://www.baidu.com),还有(https://202.108.22.5)的。
以前也看过链接中的资源,但是不用心,看的比较粗糙,所以还是不会,这次又看了一遍,看到反义那个地方,顿时灵光一闪,这个知识刚好能解决我的问题。
最后我的正则字符串是:”(http:www.//[^\)]*)”;(这个正则表达式被转义了,具体看下面代码)这里说下我用的是java。
talk is cheap,show me the code(没代码说个几把)。
下面是哥的代码:
String content = "asdfasdfadsfas(htt"
+ "p://www.baidu.com)sdfasdfasdf";
String regex = "\\(http:www.\\/\\/[^\\)]*\\)";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(content);
System.out.println(m.group());
然而这段代码,匹配是匹配到了,但是有错误:
Exception in thread “main” java.lang.IllegalStateException: No match found
去网上查查,原理没搞清楚,但是搜到了使用group函数的正确姿态。
while(m.find()){
System.out.println(m.group());
}
OK,一切搞定。 正则先学到这里,以后有空,或者再用到,接着搞。