初识Java正则表达式

来源:互联网 发布:手机qq网络连接不可用 编辑:程序博客网 时间:2024/04/30 23:23
正则表达式是一种强大而灵活的文本处理工具。一般来讲,正则表达式就是以某种方式来描述字符串,对字符串进行匹配搜索。例如,想要找到一个数字,在正则表达式中用\d表示一位数字;想要找到字符串中的空字符时使用"\\s","\\"在java中的意思是“为正则表达式插入一个反斜线“,而"\s"表示空白符(空格、tab、换行、换页和回车)。正则表达式是一种简洁的、动态的语言,提供了一种完全通用的方式,能够解决各种字符串处理的相关问题(匹配、选择、编辑、验证等)。再举几个栗子说明一下:"-1234".matches("-?\\d+")                  true"+211".matches("-?\\d+")                   true"+527".matches("(-|\\+)?\\d+")          true"-?\\d+"表示负数后有一个或多个数字。当需要匹配可能负数也可能正数时,使用表达式"(-|\\+)?\\d+",其中"(-|\\+)"是正则表达式的一个捕获组,里面的"|"表示逻辑或,表示负数或者正数,之所以是"\\+"来表示正数是因为在正则表达式中"+"有着特殊的用法。"\\d"->"\d"表示数字[0-9],后边的"+"就是"+"在正则表达式的特殊用法,即表示匹配"匹配一个或者多个修饰字符",在这里表示匹配一个或多个数字。有一个"替换空格"的算法题目是这么描述的:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。利用Java的String类自带的一个正则表达式工具--replaceAll()方法很容易解决。public String replaceSpace(StringBuffer str) {        return str.toString().replaceAll("\\s", "%20");}正如上面代码所示,只需一句代码就更搞定,可见正则表达式的强悍之处。对于Java的正则表达式来说,String类自带的功能比较有限,Java语言提供了强大的正则表达式对象。导入"java.util.regex"包,然后用 static Pattern.compile()方法来编译你的正则表达式即可。然后将你想要检索的字符串传入Pattern对象的matcher()方法。该对方法会生成一个Matcher对象。举个栗子:Matcher m = Pattern.compile("\\w+").matcher("Evening is full of the linnet's wings");while(m.find())    System.out.print(m.group()+" ");输出:Evening is full of the linnet s wings    其中"\\w+"表示匹配一个或多个词字符,Matcher的find()方法可以像迭代器一样前向遍历输入字符串。附表:正则表达式字符B       指定字符B\xhh        十六进制的oxhh的字符\uhhhh  十六进制的oxhhhh的Unicode字符\t      制表符tab\n      换行符\t      回车\f      换页\e      转义附表:正则表达式字符B       指定字符B\xhh        十六进制的oxhh的字符\uhhhh  十六进制的oxhhhh的Unicode字符\t      制表符tab\n      换行符\t      回车\f      换页\e      转义正则表达式字符类[abc]       包含a、b和c的任何字符(和a|b|c相同)[^abc]      除了a、b和c之外的任何字符(^表示否定)[a-zA-Z]        从a到z或者从A到Z的任何字符(-表示范围)[abc[hij]]      任意a、b、c、h、i和j字符(和a|b|c|h|i|j作用相同)(表示合并)[a-z&&[hij]]    任意h、i或j(&&表示交)\s          表示空白符(空格、tab、换行、换页和回车)\S          非空白符(^\s)\d          数字[0-9]\D          非数字[^0-9]\w          词字符[a-zA-Z0-9]\W          非词字符[^\w]逻辑操作符XY      Y跟在X后面X|Y     X或Y(X)     捕获组。可以在表达式中用\i引用第i个捕获组边界匹配符^   一行的起始$  一行的结束\b  词的边界\B  非词的边界\G  前一个匹配的结束量词X?      一个或零个XX*      零个或多个XX+      一个或多个XX{n}        恰好n次XX{n,}       至少n次XX{n,m}  至少n次,至多m次X未完待续.....
0 0
原创粉丝点击