java 正则表达式

正则表达式 (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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值