加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Java正则表达式基础入门知识

发布时间:2016-11-29 04:09:47 所属栏目:大数据 来源:站长网
导读:众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大家都知道,正则表达式

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

大家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

一:什么是正则表达式

nbsp;nbsp;nbsp; 1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

nbsp;nbsp;nbsp; 2.用途:

字符串匹配(字符匹配)

字符串查找

字符串替换

字符串分割

nbsp;nbsp;nbsp; 例如:

从网页中揪出email地址

IP地址是否正确

从网页中揪出链接

nbsp;nbsp;nbsp; 3.java中处理正则表达式的类:

java.lang.String

java.util.regex.Pattern:模式类:字符串要被匹配的这么一个模式,该模式本身已经被编译过,使用的话效率要高很多。

java.util.regex.Matcher:匹配类:这个模式匹配某个字符串所产生的结果,这个结果可能会有很多个。

nbsp;nbsp;nbsp; 4:下面通过一个小程序简单介绍一下正则表达式

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
 public static void main(String[] args) {
  //matches()判断字符串是否匹配某个表达式,"."表示任何一个字符
  p("abc".matches("..."));
  //将字符串"a2389a"中的数字用*替换,d 表示“0--9”数字
  p("a2389a".replaceAll("d", "*"));
  //将任何是a--z的字符串长度为3的字符串进行编译,这样可以加快匹配速度
  Pattern p = Pattern.compile("[a-z]{3}");
  //进行匹配,并将匹配结果放在Matcher对象中
  Matcher m = p.matcher("abc");
  p(m.matches());
  //上面的三行代码可以用下面一行代码代替
  p("abc".matches("[a-z]{3}"));
 }
 public static void p(Object o){
  System.out.println(o);
 }
} 

下面是打印结果

true
a****a
true
true

nbsp;现在通过一些实验来说明正则表达式的匹配规则,这儿是Greedy方式

nbsp; .nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 任何字符

nbsp;a#63;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a一次或一次也没有

nbsp;a*nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a零次或多次

nbsp;a+nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a一次或多次

nbsp;a{n}#63;nbsp;nbsp;nbsp;nbsp;nbsp; a恰好 n 次

nbsp;a{n,}#63;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a至少n次

nbsp;a{n,m}#63;nbsp;nbsp; a至少n次,但是不超过m次

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //初步认识. * + #63;
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("a".matches("."));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("aa".matches("aa"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("aaaa".matches("a*"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("aaaa".matches("a+"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("".matches("a*"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("aaaa".matches("a#63;"));//false
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("".matches("a#63;"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("a".matches("a#63;"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("1232435463685899".matches("d{3,100}"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("192.168.0.aaa".matches("d{1,3}.d{1,3}.d{1,3}.d{1,3}"));//false
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("192".matches("[0-2][0-9][0-9]"));//true

[abc]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a、b 或 c(简单类)

[^abc]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 任何字符,除了 a、b 或 c(否定)

[a-zA-Z]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z[def]]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; d、e 或 f(交集)

[a-z[^bc]]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a 到 z,除了 b 和 c:[ad-z](减去)

[a-z[^m-p]]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; a 到 z,而非 m 到 p:[a-lq-z](减去)

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; //范围

nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("a".matches("[abc]"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("a".matches("[^abc]"));//false
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("A".matches("[a-zA-Z]"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("A".matches("[a-z]|[A-Z]"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("A".matches("[a-z[A-Z]]"));//true
nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; p("R".matches("[A-Z[RFG]]"));//true

dnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 数字:[0-9]

Dnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 非数字: [^0-9]

snbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 空白字符:[ tnx0Bfr]

Snbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 非空白字符:[^s]

wnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 单词字符:[a-zA-Z_0-9]

Wnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; 非单词字符:[^w]

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!