正则表达式
常用的正则表达式
正则表达式的语法
示例1
一串字符串以偶数结尾可以描述为:[\\d]*[02468]
例如 “123”.matches(“[\\d]*[02468]”) returnsfalse
“122”.matches(“[\\d]*[02468]”) returns true
示例2
(xxx)xxx-xxxx,x是一位数字且第一位不可为0,可以描述为:\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}
注意:为了在正则表达式中表示字面值(或者),必须使用\\(和\\)
例如 “(912)921-2782”.matches(\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4})returns true
“912-2781”.matches(\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4})returns false
示例3
假设姓由最多25个字母组成,并且第一个为大写形式。
则姓的模式可以描述为[A-Z][a-zA-Z]{1,24}
例如 “Smith”.matches([A-Z][a-zA-Z]{1,24})retutns true
“Jones123”.matches([A-Z][a-zA-Z]{1,24})returns false
替换和拆分字符
String类包含repalceAll、repalceFirst和split方法,用于替换和拆分字符串
repalceAll方法替换所有匹配的子字符串,repalceFirst方法替换第一个匹配的子字符串
例如
System.out.println(“JavaJava Java”.repalceAll(“v\\w”,”wi”));
显示
Jawi Jawi Jawi
下面代码
System.out.println(“JavaJava Java”.repalceFirst(“v\\w”,”wi”));
显示
Jawi Java Java
有两个重载的split方法。split(regex)方法使用匹配的分隔符将一个字符串拆分为子字符串
例如 String[] tokens=”Java1Html2Perl”.split(“\\d”);拆分为Java,Html,Perl
在split(regex,limit)方法中,limit参数确定模式匹配多少次。如果limit<=0,split(regex,limit)等同于split(regex)。如果limit>0,模式最多匹配limit-1次
示例:”Java1Html3Perl”.split(“\\d”,0);拆分为Java,Html,Perl
”Java1Html3Perl”.split(“\\d”,1);拆分为Java1Html2Perl
”Java1Html3Perl”.split(“\\d”,2);拆分为Java,Html2Perl
”Java1Html3Perl”.split(“\\d”,3);拆分为Java,Html,Perl
”Java1Html3Perl”.split(“\\d”,4);拆分为Java,Html,Perl
”Java1Html3Perl”.split(“\\d”,5);拆分为Java,Html,Perl
注意:默认情况下,它们会尽可能匹配最多次。可以通过在后面添加问号(?)来改变量词符的默认行为,这意味着它将匹配尽可能少的次数。
例如:
System.out.println(“Jaaavaa”.repalceFirst(“a+”,”R”));显示JRvaa
System.out.println(“Jaaavaa”.repalceFirst(“a+?”,”R”));显示JRaavaa