------- android培训、java培训、期待与您交流! ----------
正则表达式
1、正则表达式:
概念:符合一定规则的表达式。
作用:用于专门操作字符串的规则。
特点:用于一些特定的符号来表示一些代码操作,来对这些代码定义格式。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。
使用:通过String类中的matches(String reges)方法来使用正则表达式。
2、具体操作功能————匹配
1、匹配: String matches方法。用规则 匹配整个字符串,只要有一处不匹配就返回false
2、正则表达式的定义:
1、限定某一位只能出现指定的字符:[字符1字符2……] :表示字符串中的第*个字符只能是字符1或者字符2……(只能是括号中的一个)
例:
class RegDemo { public static void main(String[] args) { String string1 = "e"; String string2 = "h"; //限定第一位只能出现cde三个字符中的一个 String reg = "[cde]"; System.out.println(string1.matches(reg)); System.out.println(String2.matches(reg)); } } /* 结果 =========================================== true false =========================================== */
2、某一位除了指定的字符外都可以:[^字符1字符2] :表示该位置上不能出现指定的字符。
3、某一位上可以为两个范围中的一个字符: [a-d[m-p]] :表示a 到d 或 m 到 p:[a-dm-p](并集)例:
class RegDemo { public static void main(String[] args) { String string1 = "e"; String string2 = "h"; //限定第一位只能出现cde三个字符中的一个 String reg = "[^cde]"; System.out.println(string1.matches(reg)); System.out.println(String2.matches(reg)); } } /* 结果 =========================================== false true =========================================== */
4、某一位上的字符可以为指定范围的字符但是除开某些字符: [a-z&&[^bc]] :a 到 z,除了 b 和 c: [ad-z] (减去) 。
5、某一位上必须是两个字符范围的交集: [a-z&&[def]] :d、e 或 f(交集)
3、预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
4、Greedy数量词
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
3、正在表达式的功能——切割
通过String[] split(String regex)方法,根据匹配给定的正则表达式来拆分此字符串 。
1、按照“空格”切割(空格个数不确定).正则表达式的定义: String reg = " +" :表示空格出现一次或者多次
2、按照“.”切割。因为“.”在正则表达式中是特殊符号。所以定义正则表达式应该转义。 定义:String reg="\\."
3、按照“\\”切割。 定义: String reg = "\\\\"
4、按照“叠词切割”如avavavvvfdfddjikk。定义正则表达式可以用组来定义。正则表达式定义String reg ="(.)\\1+"
可以将规则封装成一个组。用()完成。组的出现都有编号,从1开始。 想要使用已有的组可以通过 \n(n就是组的编号)的形式来获取。.
4、正则表达式的功能——替换
通过String replaceAll(String regex, Stringnewstring) :使用给定的 newstring 替换此字符串所有匹配给定的正则表达式的子字符串。
1、替换字符串中的多个连续数字,替换成#。 参数定义String regex = "\\d{5,}" String newstring = "#"
2、将叠词替换成该词的单个字母。获取组中的字符的方式"$1".参数定义:String regex ="(.)\\1+"
String newstring = "$1"
5、正则表达式的功能——取出
将字符串中符合规则的子串取出
造作步骤:
总结:1,如果只想知道该字符是否对是错,使用匹配。1、将正则表达式封装成对象。
2、让正则表达式和要操作的字符串相关联
3、关联后,获取正则匹配引擎。
4、通过引擎对符合规则的子串进行操作。比如 取出。
import java.util.regex.*; class RegexDemo2 { public static void main(String[] args) { getDemo(); } public static void getDemo() { String str = "ming tian jiu yao fang jia le ,da jia。"; System.out.println(str); String reg = "\\b[a-z]{4}\\b"; //将规则封装成对象。 Pattern p = Pattern.compile(reg); //让正则对象和要作用的字符串相关联。获取匹配器对象。 Matcher m = p.matcher(str); //System.out.println(m.matches()); //其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。 //只不过被String的方法封装后,用起来较为简单。但是功能却单一。 // boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。 // System.out.println(b); // System.out.println(m.group());//用于获取匹配后结果。 //System.out.println("matches:"+m.matches()); while(m.find()) { System.out.println(m.group()); System.out.println(m.start()+"...."+m.end()); } } }
2,想要将已有的字符串变成另一个字符串,替换。
3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。