java 正则表达式

来源:互联网 发布:王者荣耀淘宝cdk抽奖 编辑:程序博客网 时间:2024/06/07 02:23

正则表达式 (regular expression) 用于指定字符串的模式,你可以在任何需要定位匹配某种特定模式的字符串的情况下使用正则表达式。


1. 字符类

括在括号中的字符集,例如 [Jj], [0-9] [A-Za-z], [^0-9]

"-"表示一个范围, "^"表示补集

【C1C2...】 任何由C1,C2...表示的字符,其中Ci可以是多个字符,字符范围(C1-C2)或字符类

【^...】          字符类的补集

【... && ...】    两个字符集的交集


2. 如果字符类中要包含"-",那"-"必须在第一项或者最后一项;如果要包含"[",则 "["必须在第一项; 如果要包含 "^" , 则 "^" 必须不在开始位置,可以在其它任何位置。

   字符 "[" , "\" ,需要使用转义符配合使用。


3. 预定义字符类

   

   \d    一个数字[0-9]   \D一个非数字 [^0-9]   \s一个空白字符[\t\n\r\f\0B   \S一个非空白字符   \w一个词语字符   \W一个非词语字符[a-zA-Z0-9_]   \p一个命名字符类   \P一个命名字符类的补集

4. 使用\作为转义字符,例如, \.匹配句号  而\\匹配反斜线


5. ^ 和 $ 分别匹配一行的开头和结尾


6. 如果X和Y是正则表达式,那XY表示:任何X的匹配后面跟随Y的·匹配

                                                 X|Y表示: 任何X或者Y的匹配


7. 量词运用到表达式X:

   X+      一个或者多个

   X*      0个或者多个

   X?      0个或者1个


正则表达式测试方法。

Pattern pattern = Pattern.compile(patternString);

Matcher matcher = pattern.matcher(jinput)

if(matcher.matches())

{

      ...

}

** input可以是实现了CharSequene接口的类的对象,例如String, StringBuilder和CharBuffer

compile模式的时候,可以加入标志,例如

Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);

一共支持6类标志

CASE_INSENSITIVE  匹配时忽略字母大小写

UNICODE_CASE       当与CASE_SENSITIVE组合时,用Unicode字母的大小写来匹配

MULTILINE                  ^和$匹配行的开头和结尾,而不是整个输入的开头和结尾

UNIX_LINES               在多行模式中匹配^和$时,只有'\n'被识别成行终止符

DOTALL                       当使用这个标志时, '.' 符号匹配所有字符,包括行终止符

CANON_EQ               考虑Unicode字符规范的等价性


正则表达式的一些常用API

java.util.regex.Pattern

static Pattern compile(String expression)

static Pattern compile(String expression, int flag)

把正则表达式字符串编译到一个用于快速处理匹配的模式对象中。

参数 expression = 正则表达式


Matcher matcher(CharSequence input)

返回一个matcher对象,可以用它在输入中定位模式的匹配


String[] split(CharSequence input)

String[] split(CharSequence input, int limit)

将输入分割成标记,其中模式指定了分隔符的形式。返回标记数组,分隔符并非标记的一部分

参数input 要分割成标记的字符串

        limit 所产生的字符串的最大数量。


java.util.regex.Matcher

boolean matches()

如果输入匹配模式,则返回true

boolean lookingAt()

如果输入的开头匹配模式,则返回true

boolean find()

boolean find(int start)

尝试查找下一个匹配,如果找到了另一个匹配,则返回true

参数 start   开始查找的索引位置

int start()

int end()

返回当前匹配的开始索引和结尾之后的索引位置

String group()

返回当前的匹配

int groupCount()

返回输入模式中的群组数量

int start(int groupIndex)

int end(int endIndex)

返回当前匹配中给定群组的开始和结尾之后的位置

参数 groupIndex   群组索引(从1开始),或者表示整个匹配的0

String group(int groupIndex)

返回匹配给定群组的字符串

参数  groupIndex  群组索引(从1开始),或者表示整个匹配的0

String replaceAll(String replacement)

String replaceFirst(String replacement)

返回从匹配器输入获得的通过将所有匹配或第一个匹配用替代字符串替代之后的字符串

参数 replacement  替代字符串

static String quoteReplacement(String str)

引用str中的所有 \和 $

Matcher reset()

Matcher reset(CharSequence input)

复位匹配器的状态,第二个方法将使匹配起作用于另一个不同的输入。这2个方法都返回this.




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 oppo手机被偷了怎么办 三星手机被偷了怎么办 手机被偷了号码怎么办 手机被偷 微信怎么办 手机被偷怎么办,还关机 我的手机被偷了怎么办 医保卡不能用了怎么办 招行u盾丢了怎么办 信用卡刷爆了要怎么办 办分期的卡丢了怎么办 房贷银行卡掉了怎么办 房贷银行卡丢了怎么办? 行驶证丢了怎么办补办 行驶证丢了怎么办异地 浦发信用卡盗刷怎么办 苹果id被盗变砖怎么办 信用卡丢了被刷怎么办 ins注册不了怎么办安卓 偷玩电脑被发现怎么办 做作业不认真的怎么办 老人脑供血不足怎么办 哺乳期吃了辣的怎么办 孕32周胎位臀位怎么办 怀孕32周胎位不正怎么办 7个月胎位不正怎么办 胎心监护老不过怎么办 8个月了胎位不正怎么办 怀孕八个月了胎位不正怎么办 怀孕八个月胎位不正怎么办 欠债的人跑了怎么办 赌博输了100万怎么办 我赌博输了4万怎么办 办80张信用卡怎么办的 19岁负债十几万怎么办 欠了十几万该怎么办 网贷负债十几万怎么办 赌博欠了十几万怎么办 欠了网贷跑了会怎么办 欠银行钱还不起怎么办 欠小额贷款公司的钱还不上怎么办 负债30万没工作怎么办