正则表达式

正则表达式(ReglarExpressions):字符串处理利器。

用途:
  1.字符串匹配(字符匹配)
  2.字符串查找
  3.字符串替换
例子:
  1.IP地址是否正确
  2.从网页中揪出email地址
  3.从网页中揪出链接
类:
  java.lang.String
  java.util.regex.Pattern
  java.util.regex.Matcher

●解释转义字符
"a8729a".replaceAll("//d","-");
字符串变为"a----a",//d表示所有数字,实际的正则
表达式为/d,因为java中//是转义字符/。

●对Pattern类和Matcher理解
Pattern是正则表达式的编译表现形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。
Parrern p = Parrern.compile("正则表达式");
然后,可将得到的模式用于创建 Matcher 对象,
Macher m = p.matcher("匹配字符串");
依照正则表达式,该对象可以与任意字符序列匹配。
m.matches();为匹配结果。
或直接写成"匹配字符串".matches("正则表达式");
分开写效率高,而且p和m会有很多实用的方法。
执行匹配所涉及的所有状态都驻留在匹配器中,
所以多个匹配器可以共享同一模式。

●初步认识. * + ? //d {}
.表示一个字符
"a".matches("."); true
*表示零个或多个
"aaaa".matches("a*"); true
+表示一个或多个
"aaaa".matches("a+"); true
?表示一个或者零个
"".matches("a?"); true
X{m,n}表示X至少m个,至多n个。
"12334534345231236".matches(//d{3,100}); true
"192.168.0.aaa".matches(//d{1,3}//.//d{1,3}//.//d{1,3}//.//d{1,3}) false
表示 数字出现至少一次至多3次然后是点之后数字出现至少一次至多三次....
"192".matches("[0-2][0-9][0-9]"); true
1为0-2,9为0-9,2为0-2所以匹配。

●范围表示
[]表示取中括号其中某一个
"a".matches("[abc]"); true
[^ ]表示取除了中括号中的 别的都可以
"a".matches([^abc]); false
[a-zA-Z] [a-z]|[A-Z] [a-z[A-Z]]都表示取a到z或者A到Z
"A".matches([a-zA-Z]);true
[A-Z&&[RFG]]表示A-Z之中的并且为RFG之中的
"R".matches("A-Z&&[RFG]"); true

●认识/s /w /d /
/d 一位数字
/D 非数字
/s 空白字符[ /t/n/x0B/f/r]
/S 非空白字符
/w 单词字符[a-zA-Z_0-9]
/W 费单词字符

●边界匹配
^行开头
"hello sir".matches("^h.*"); true
以h开头之后有一个字符之后有零个或多个字符
$行结束
"hello sir".matches(".*ir$"); true
以ir结尾并且前面有一个或多个字符
/b单词边界
"hello sir".maches("^h[a-z]{1,3}o//b.*"); true
以h开头后面为a-z的字符出现至多三次至少一次然后o然后单词边界
然后一个或多个字符
寻找空白行
" /n".matches("^{//s&&[^//n]*//n&}"); true
开头是空白字符并且不是回车换行后面有零个或多个这些非回车空白字符最后是回车。

●Matcher的find方法 reset方法 matches方法 lookingAt方法
find方法扫描输入序列以查找与该模式匹配的下一个子序列
matches方法尝试与整个输入序列匹配
reset方法重置匹配器
lookingAt方法尝试从区域开头开始的输入序列与该模式匹配
start方法返回匹配的初始索引
end方法返回匹配字符之后的偏移量

●替换
Pattern.compile("字符串或正则表达式","常量");
当常量为CASE_INSENSITIVE时 大小写不敏感


输出为 JAVA java JAVA java IloveJAVA you hate java asdfaadf

●分组
正则表达式中()代表分组
()中是正则表达式,()可以套(),
m.group(1)表示满足第一个小括号中规则的子序列。
判断第一组第二组的方法为看做小括号是第几个。

●匹配E-mail地址的正则表达式
"lajdfal@alskdjfl.com".matches("[//w[.-]]+@[//w[.-]]+//.[//w]+");


●代码统计程序








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值