您的位置:首页 > 职场人生

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

2015-11-24 00:11 585 查看
------- <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 后跟 Y
X|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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: