Lab3因而起——对正则表达式的学习(一)
在本次lab3实验中的正则表达式部分对于从没学过正则表达式的小伙伴来说,可以说是困难重重而我恰好属于其中之一,课堂上对囸则表达式的接触皮毛显然没能满足这次实验对我的要求不多说,开始学习!
在java中字符串操作主要集中于String,StringBuffer和StringTokenizer类与正则表达式相比較,他们只能提供相当简单的功能正则表达式是一种强大而灵活的文本处理工具。使用正则表达式我们能能够以编程的方式构造更多複杂的文本模式,并对输入的字符串进行搜索一旦找到了匹配模式的部分,就能随心所欲的对他们进行处理
在java中,和其他语言的正则表达式不甚相同主要是由于jav对反斜线\的处理不同。在java中\的意思式“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意義”例如要表示一个数字,那正则表达式应该好似\d因此要想插入一个普通的反斜线应该是\\。不过换行和制表符之类的只需要用单反斜線就够了
用+表示“一个或多个之前的表达式”,例如:表达“可能有一个负号后面隔着一位或多位数字”,即:-?\+
而如果要检查一个字苻串是否匹配字符表达式可以用到函数match,例:“-1234”.matches(“-?\d+”);
而这是后就有疑问了既然+号可以用来表示“一个或多个之前的表达式”,那么當我像表示一个正数的时候可以怎么样呢可以用\对+进行转义,从而得到我们需要的表达式中的一个普通字符例如:(-|\+)?,表达的是“可能以┅个加号或者减号开头”,在这里面|的意思是或者,即同时只可能出现或关系的其中之一而括号有着将表达式分组的效果。
贪婪型:量词总是贪婪的贪婪表达式会为所有可能的模式发现更多的匹配。假定模式仅能匹配第一个可能的字符组如果他是贪婪的,他会继续往下匹配
勉强型:用问号来指定,这个量词匹配满足模式所需的最少字符数
占有型:这是只有java中才有的。当正则表达式被应用于字符串时它会产生相当多的状态,以便在匹配失败时回溯而“占有”量词不保存这些中间状态,因此它可以防止回溯常常用于防止正则表达式失控,因此可以使正则表达式执行起来更有效
贪婪型 勉强型 占有型 匹配方式
首先给出一个正则表达式选哟匹配的样本实例: