文章目录

正则表达式是一种强大而灵活的文本处理工具。使用正则表达式,我们能够以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索。一旦找到了匹配这些模式的部分,你就能够随心所欲地对他们进行处理。正则表达式提供了一种完全通用的方式,能够解决各种字符串处理的相关的问题:匹配、选择、编辑以及验证。

在java中,\的意思是“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。”例如,如果你想表示一位数字,那么正则表达式应该是\d。如果你想插入一个普通的反斜线,则应该这样\\。不过换行和制表符之类的东西只需使用单反斜线:\n\t。
例如,要找一个数字,它可能有一个负号在最前面,那你就写一个负号加上一个问号:-?,要表示“一个或多个之前的表达式”,应该使用+。所以,如果要表示“可能有一个负号,后面跟着一位或多位数字”,可以这样:-?\d+。如果要表示“可能以一个加号或减号开头或二者都没有,后面跟着一位或多位数字”,可以这样表示:(-|\+)?\d+。字符+在正则表达式中有特殊的意义,所以必须使用\将其转义,使之成为表达式中的一个普通字符。
String类还自带了一个非常有用的正则表达式工具–split()方法,其功能是”将字符串从正则表达式匹配的地方切开。“例如:
1、split(),这里用的是普通的字符作为正则表达式,其中并不包含任何特殊的字符。因此该split()只是按空格来划分字符串。
2、split(“\W+”),用到了\W,它的意思是非单词字符(如果W小写,\w,则表示一个单词字符)。它表示”一个或多个非单词字符“,将标点字符删除了。
3、split(“n\W+”),表示”字母n后面跟着一个或多个非单词字符“,可以发现,在原始字符串中,与正则表达式匹配的部分,在最终结果中都不存在了。
String.split()还有一个重载的版本,它允许你限制字符串分割的次数。
String类自带的最后一个正则表达式工具是”替换“。你可以只替换正则表达式第一个匹配的子串(replaceFirst()),或是替换所有匹配的地方(replaceAll())。例如:
s.replaceFirst(“f\w+”,”located”);该表达式要匹配的是,以字母f开头,后面跟一个或多个字母(注意这里的w是小写的)。并且只替换掉第一个匹配的部分,所以”found“会被替换成”located“。
s.replaceAll(“shrubbery|tree|herring”,”banana”);该表达式要匹配的是三个单词中的任意一个,因为它们以竖直线分割表示”或“,并且替换所有匹配的部分。

文章目录