正则表达式的学习记录

正则表达式的组成规则:

字符:

x 代表一个字符,可以是字母、数字等

\\ 反斜线字符。

\n 新行(换行)符 ('\u000A')

\r 回车符 ('\u000D')

//如下正则表达式,匹配一段字符串中是否有新行、回车符、TESTNAME字符、\d,\\d表示\d

string regEx = "\n\\d*\r*!\\s*TESTNAME“

字符类:

[abc] a、b 或 c,例如"[abc]"可以匹配"plain"中的'a'

[^abc] 任何字符,除了 a、b 或 c,例如"[ ^abc]"可以匹配"plain"中

的'p'、'l'、'i'、'n'。

[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内,例如"[a-z]"可以匹配'a'到'z'范围内的任意小

写字母

[0-9] 0到9的字符都包括,例如"[0-9]"可以匹配'0'到'9'范围内的任意数字

预定义字符类:

"^.$"可以匹配所有字符

\d 数字:[0-9],例如"\\d"可以匹配0-9的所有数字,第一个\是转义符

\w 单词字符:[a-zA-Z_0-9],例如"\w"可以匹配a到z,A到Z,_,0到9这些字符

在正则表达式里面组成单词的东西必须有这些东西组成

边界匹配器:

^ 行的开头 ,例如"^1[abc]$"可以匹配"1a"中的1,不能匹配"a1"中的1

$ 行的结尾 ,例如"^1[abc]$"中$表示正则表达式的结尾

\b 单词边界(需使用模式和匹配器),就是不是单词字符的地方,例如"er\b"可以匹配"never"中的"er",

但不能匹配"verb"中的"er"

数量词:

X? X,一次或一次也没有,例如"do(es)?" 可以匹配 "do" 或 "does" 中的"do"

X* X,零次或多次,例如"zo*" 能匹配"z"以及"zoo"

X+ X,一次或多次,例如"zo+"能匹配"zo"以及"zoo"但不能匹配"z"

X{n} X,恰好n次,例如"o{2}"不能匹配"Bob"中的"o"但是能匹配"food"中的两个o

X{n,} X,至少n次,例如"o{2,}"不能匹配"Bob"中的"o"但能匹配"foooood"中的所有 o

X{n,m} X,至少n次但是不超过m次,例如"o{2,3}"能匹配"foood"中的三个o,但不能匹配"fod"中的一

个o

正则表达式常用方法:

//matches是匹配功能

public boolean matches(String regex)

//案例

public static void main(String[] args) {

//1.正则表达式,匹配:public boolean matches(String regex)

System.out.println("abc".matches("[a-z]{4}"));

}

分割功能:

//split是分割功能

public String[] split(String regex)

//案例

public static void main(String[] args) {

String str = "abc,123,Aaa,DDD";//获得字符串

String[] arr = str.split(",");//分割字符串

for(int i = 0;i<=arr.length - 1;i++){//循环遍历得到每一个字符串

System.out.println(arr[i]);

}

}

替换功能:

//replaceAll是替换功能

public String replaceAll(String regex,String replacement)

//案例

public static void main(String[] args) {

//把dasdDADdaas中所有的大写字母A-Z改为M

System.out.println("dasdDADdaas".replaceAll("[A-Z]", "M"));

}

获取功能:

public static void main(String[] args) {

Pattern p=Pattern.compile("\\d+");

String rs = p.pattern();//获取 \d+

System.out.println("pattern方法获取的结果:"+rs);

//用获取的结果p分割字符串

String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");

//循环遍历得到分割后的字符串

for(String s:str){

System.out.println(s);

}

}

正则表达式的应用:

验证手机号:

//案例

public static void main(String[] args) {

//说明:前三位分别以13,14,15,18开头,第3位使用部分数组,总长度是11位

String regex = "^(13[0-

9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";

Scanner sc = new Scanner(System.in);//从控制台输入字符串信息

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

验证邮箱:

//案例

public static void main(String[] args) {

//说明:相关字符开头,接着是@,接着是相关字符,接着是.

String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

Scanner sc = new Scanner(System.in);

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

验证QQ号:

//案例

public static void main(String[] args) {

//QQ号匹配规则:首字母不为0,第二位可以是0,只能为数字,至少为5位,QQ号从10000开始,据说

是马X腾的

String regex = "[1-9][0-9]{4,}";

//String regex = "[1-9]\\d{4,}"; //另一种写法

Scanner sc = new Scanner(System.in);

String str = sc.nextLine();//获得输入的信息

System.out.println(str.matches(regex));// str字符串是否匹配regex规则

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 正则表达式简单使用记录 正则表达式是用来查找符合某些复杂规则字符串的工具,它是记录文本规则的代码 常用元字符(.\...
    firewt阅读 997评论 0 0
  • String类和正则表达式 今天的主要内容 Scanner类概述Scanner获取数据出现的小问题及解决方案 St...
    须臾之北阅读 1,913评论 0 3
  • 装载内容说明:纯属个人记录,查看详细内容,请到原文链接1原文链接2 元字符image.png 重复限定符image...
    Aiden_Xi阅读 791评论 0 0
  • Java正则表达式入门基础篇 正则表达式是什么呢,在网上可以搜到很多版本的定义,大...
    柚子1231223阅读 764评论 0 10
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,480评论 16 22