正则表达式
在正则表达式中,用 \d 表示一位数字,在其他语言中,\ 表示“我想要在正则表达式中插入一个普通的(字面上的)反斜线,请不要给它任何特殊的意义。”而在Java中,\ 的意思是“我要插入一个正则表达式的反斜线,想表示一位数字那么正则表达式应该是 \d。如果你想插入一个普通的反斜线,应该这样写 \\。不过换行符和制表符之类的东西只需要使用单反斜线:\n\t
在正则表达式中,用括号将表达式进行分组,用竖线 | 表示或操作
例如:+911".matches("(-|\\+)?\\d+") 这个正则表达式表示字符串的起始字符可能是一个 - 或 +,或者二者都没有(因为后面跟着 ? 修饰符)。因为字符 + 在正则表达式中有特殊的意义,所以必须使用 \\ 将其转义,使之成为表达式中的一个普通字符
String类还自带了一个非常有用的正则表达式工具——split() 方法,其功能是“将字符串从正则表达式匹配的地方切开。”
`例如 String string="I impose some money and want to buy harness ";
System.out.println(Arrays.toString( string.split(" ")));
System.out.println(string.split(" ")); //这样返回的是字符串的地址
System.out.println( Arrays.toString(string .split("\\W+")));
System.out.println( Arrays.toString(string .split("e\\W+")));
\\W(大写的) 表示一个非单词符号 所以会在一个空格或者其他非单词字幕的地方分割
\\w(小写的 表示一个单词字母
第四个 split() 表示“字母 e 后面跟着一个或多个非单词字符 表示 字母e后面跟着一个非单词符号
第3,4输出 [I, impose, some, money, and, want, to, buy, harness]
[I impos, som, money and want to buy harness ]
String.split() 还有一个重载的版本,它允许你限制字符串分割的次数。replaceFirst(),replaceAll()
System.out.println( string .replaceFirst("h\\w+","filter"));
System.out.println( string .replaceFirst("h\\w","filter"));
System.out.println( string .replaceAll("impose|want|buy","go"));
输出I impose some money and want to buy filter
I impose some money and want to buy filterrness
I go some money and go to go harness
由第一第二条语句可以看到 w 后面有+号时 会整个替换掉单词,
第三条由正则表达式的 | (或) 意思是 要匹配其中的一个或一个以上
匹配了多个则将多个都替换