黑马程序员-day13-正则表达式

来源:互联网 发布:画像素软件 编辑:程序博客网 时间:2024/06/05 17:17

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
正则表达式String regex专门用于操作字符串,简化代码特点用一些特点的符号来操作方法,简化书写,正则表达式写在""号内。编译原理正则表达式的书写,先会被当作字符串被虚拟机编译一次,再按照正则的构造机制编译一次,如正则表达式要表示反斜杠“\”,需写成"\\\\".首先按照字符串被编译为"\\",正则再做编译时就会将第二个反斜杠转为字符反斜杠,而不表示转义字符的意思了,再比如正则表达式要表示普通字符“.”,需写成"\\.",首先作为字符串会被编译为"\.",然后正则再编译的时候就会把表示匹配任意字符的“.”转义为一个普通的点。
也就是说,正则表达式的反斜杠,都是成对出现的。字符x字符 x\\反斜线字符字符类[abc]a、b 或 c(简单类)[^abc]任何字符,除了 a、b 或 c(否定)[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)[a-d[m-p]]a 到 d 或 m 到 p:[a-dm-p](并集)[a-z&&[def]]d、e 或 f(交集)[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减去)[a-z&&[^m-p]]a 到 z,而非 m 到 p:[a-lq-z](减去)预定义字符类.任何字符(与行结束符可能匹配也可能不匹配)\d数字:[0-9]\D非数字: [^0-9]\s空白字符:[ \t\n\x0B\f\r]\S非空白字符:[^\s]\w单词字符:[a-zA-Z_0-9]\W非单词字符:[^\w]边界匹配器^行的开头$行的结尾\b单词边界\B非单词边界\A输入的开头\G上一个匹配的结尾\Z输入的结尾,仅用于最后的结束符(如果有的话)\z输入的结尾Greedy数量词,X表示对应字符X?X,一次或一次也没有X*X,零次或多次X+X,一次或多次X{n}X,恰好 n 次X{n,}X,至少 n 次X{n,m}X,至少 n 次,但是不超过 m 次Logical运算符XYX 后跟 YX|YX 或 Y(X)X,作为捕获组,如表达式((A)(B(C))) 包含四个组
1     ((A)(B(C)))
2     \A
3     (B(C))
4     (C)
技巧:从左至右数左括号,第几个左括号就是第几组Back引用\n任何匹配的 nth 捕获组,表示捕获第n个组,如(.)表示任意字符,(.)+表示任意字符出现了多次,如"adsune"任意一个字符串均满足要求。但是如果是(.)\\1+,表示的是第一个字符是任意字符,但是从第二个字符起,必须匹配之前捕获到的第一个字符,也就是说,这个正则表达的意思是连续出现相同字符;而当第一个连续相同的匹配完,(.)就表示下一个字符了,那么\\1+也就是表示相应字符连续出现了方法(String类方法)判断boolean matches(String regex)
判断该字符串是否匹配该正则表达式切割1、String[] split(regex)
根据给定的正则表达式对字符串进行拆分
2、String[] split(regex,int limit)
limit>0,至多切割limit-1次
limit=0,切完,丢弃末尾空字符串
limit<0,切完,不丢弃末尾空字符串替换1、String replaceAll(regex,str)
使用str来替换掉所有符合regex的内容
2、String replaceFirst(regex,str)
使用str来替换掉第一次符合regex的子字符串
注意:str可以对regex内容中的捕获组所获取到的内容进行引用,使用符号:$n,其中n表示第几个捕获组,如:
String replaceAll("(.)\\1+","$1")即将字符串中连续出现的相同字符替换为对应的单个字符Pattern类含义将正则表达式进行编制,并封装为模式;
此类构造函数不对外提供,使用compile方法来获取对象;
此类线程安全;创建模式1、static Pattern compile(regex)
此方法返回按照指定正则表达式编制的模式(即本类对象)获取regex2、String pattern() 会返回此模式对应的regex,但注意反斜杠会改变切割3、String[] split(String str)
按照此模式对str进行切割创建匹配器4、Matcher matcher(String str)
此方法会返回一个此模式与给定字符串关联的匹配器,以便使用该匹配器来控制、操作该匹配过程Matcher类含义通过模式对字符串进行匹配操作的匹配器,能够通过匹配器对匹配过程进行操作和控制;
此类同样没有构造函数;创建与指定字符串相匹配的匹配器通过Pattern类的matcher方法来获取与str相匹配的匹配器
Matcher m=Pattern.compile(regex).matcher(str);匹配boolean matches()
尝试对匹配区域进行匹配,完全匹配返回true,一旦出现不匹配就返回false寻找boolean find()
尝试进行寻找匹配的内容,一旦找到返回ture,否则false获取匹配的内容String group()
返回由以前匹配动作所匹配的子序列获取匹配内容位置int start()
返回相匹配子序列的初始索引
int end()
返回子序列最后相匹配位置的偏移量重置匹配器Matcher reset()
将匹配器进行重置,清空索引位置
Matcher reset(String str)
重置匹配器的索引和关联字符串设置匹配器的匹配区域Matcher region(begin,end)
设置之后,匹配器不会再对超出区域部分匹配(含头不含尾)替换String replaceAll(str)
使用匹配器将区域内相匹配的所有内容替换为str

0 0
原创粉丝点击