栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

正则表达式初级理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式初级理解

正则表达式

正则表达式是一个字符串,用来描述匹配一个字符串集合的模式。

可以使用正则表达式处理字符串,例如:匹配、替换和拆分字符串。

  • 语法

正则表达式由字面值字符和特殊符号组成。

一、常用的正则表达式

代码

匹配

示例

x

指定字符x

Java匹配Java

.

任意单个字符,除了换行符外

Java匹配J..a

(ab|cd)

ab或者cd

ten匹配t(en|im)

[abc]

a、b或者c

Java匹配Ja[uvwx]a

[^abc]

除了ab或者c外的任意字符

Java匹配Ja[^ars]a

[a-z]

a到z

Java匹配[A-M]av[a-d]

[^a-z]

除了a到z外的任意字符

Java匹配Jav[^b-d]

[a-e[m-p]]

a到e或m到p

Java匹配[A-G[I-M]]av[a-d]

[a-e&&[c-p]]

a到e与c到p的交集

Java匹配[A-P&&[I-M]]av[a-d]

d

一位数字,等同于[0-9]

Java2匹配”Java[\d]”

D

一位非数字

$Java匹配”[\D][\ D]ava”

w

单词字符

Java1匹配”[\w]ava[\d]”

W

非单词字符

$Java匹配”[\W][\ w]ava”

s

空白字符

“Java 2”匹配“Java\s2”

S

非空白字符

Java匹配”[\S]ava”

P*

0或者多次出现模式p

aaaa匹配”a*”

abab匹配”(ab)*”

P+

1或者多次出现模式p

a匹配”a+b*”

able匹配”(ab)+.*”

P?

0或者1次出现模式p

Java匹配”J?Java”

ava匹配”J?Java”

P{n}

正好出现n次模式p

Java匹配”Ja{1}.*”

Java不匹配”.{2}”

P{n,}

至少出现n次模式p

aaaa匹配”a{1,}”

a不匹配”a{2,}”

P{n,m}

n到m(不包含)次出现模式p

aaaa匹配”a{1,9}”

abb不匹配”a{2,9}bb”

p{P}

一个标点字符

!”#$%&’()*+,-./:;<=>?@[]^_’{|}~

J?a匹配”Jp{P}a”

J?a不匹配”Jp{P}a”

二、其它的正则表达式

        1.社会安全号:xxx-xx-xxx  (x为数字)

正则表达式为:[\d{3}-[\d]{2}-[\d]{4}

例如:”111-22-3333”.matches(“[\d]{3}-[\d]{2}-[\d]{4}”) returns true.

  ”11-22-3333”.matches(“[\d]{3}-[\d]{2}-[\d]{4}”) returns false.

        2.偶数以数字0、2、4、6或者8结尾。

正则表达式:[\d]*[02468]

例如:”123”.matches(“[\d]*[02468]”) returns false.

    ”122”.matches(“[\d]*[02468]”) returns true.

        3.电话号码:(xxx)xxx-xxxx  (x为数字且第一位数字不为0)

正则表达式为:\([1-9][\d]{2}\) [\d]{3}-[\d]{4}

例如:”(912) 921-2728”.matches(“\([1-9][\d]{2}\) [\d]{3}-[\d]{4}”) returns true.

    ”921-2728”.matches(“\([1-9][\d]{2}\) [\d]{3}-[\d]{4}”) returns false.

        4.姓:(假定姓最多由25个字母组成且第一个字母为大写字母)

正则表达式:[A-Z][a-zA-Z]{1,24}

例如:”Smith”.matches(“[A-Z][a-zA-Z]{1,24}”) returns true.

  ”Jones123”.matches(“[A-Z][a-zA-Z]{1,24}”) returns false.

        5.标识符:

正则表达式:[a-zA-Z_$][\w$]*

        6.任何字符串匹配正则表达式”.*”

  • 匹配字符串

正则表达式 ”Java.*” 描述了一个字符串模式。

String类中的matches不仅可以匹配一个固定的字符串,还可以匹配符合一个模式的字符串集,返回ture。在使用正则表达式时matches极为重要。

例如:”Java”.matches(“Java”)

“Java is fun”.matches(“Java.*”)

“Java is cool”.matches(“Java.*”)

“Java is powerful”.matches(“Java.*”)

以Java开始,后面跟0个或者多个字符串。

.*匹配0或者多个任意字符。

  • 替换字符串

replaceAll方法替换所有匹配的子字符串。

replaceFirst方法替换第一个匹配的子字符串。

例如:代码:System.out.println(“Java Java Java”.replaceAll(“v\w”,“wi”));

  显示:Jawi Jawi Jawi

  代码:System.out.println(“Java Java Java”.replaceFirst(“v\w”,“wi”));

  显示:Jawi Java Java

  • 拆分字符串

split(regex)方法使用匹配的分隔符将一个字符串拆分为子字符串。

例如:String tokens = “Java1HTML2Perl”.split(“\d”);

  将字符串“JavaHTML2Perl”拆分为Java、HTML以及Perl并且保存在tokens[0], tokens[1]以及tokens[2]中。

split(regex,limit)方法中limit参数确定模式匹配多少次。

如果limit<=0,split(regex,limit)等同于split(regex)。

如果limit>0,模式最多匹配limit-1次。

例如:“Java1HTML2Perl”.split(“\d”,0); 拆分为Java,HTML,Perl

  “Java1HTML2Perl”.split(“\d”,1); 拆分为Java1HTML2Perl

“Java1HTML2Perl”.split(“\d”,2); 拆分为Java,HTML2Perl

“Java1HTML2Perl”.split(“\d”,3); 拆分为Java,HTML,Perl

“Java1HTML2Perl”.split(“\d”,4); 拆分为Java,HTML,Perl

“Java1HTML2Perl”.split(“\d”,5); 拆分为Java,HTML,Perl

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号