Java -- 正则表达式
1. 正则表达式
2. 使用正则表达式
可以直接使用String提供的方法 也 可以使用Pattern 和 Matcher类,Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式必须先编译为Pattern对象(可以多次利用),然后利用该对象创建对应的Matcher对象,执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共用一个Pattern.
例一:
public class Main {
public static void main(String[] args) throws IOException {
String ip = "192-0-0-1";
System.out.println( ip.matches("\\d*-\\d*-\\d*-\\d*") ); //直接用String
System.out.println(ip.replaceFirst("\\d*", "168"));
System.out.println(ip.replaceFirst("\\d?", "168"));
String [] str = ip.split("-");
for( String temp : str )
System.out.print(temp + " ");
System.out.println();
Pattern p = Pattern.compile("\\d*");
Matcher m = p.matcher("192");
System.out.println( m.matches() );
System.out.println( Pattern.matches("\\d*-\\d*-\\d*-\\d*", "192-168-1-1") ); //直接使用Pattern静态方法,不可复用
}
}
例二:
public class Main {
public static void main(String[] args) throws IOException {
Matcher m = Pattern.compile("\\w+").matcher("hello java");
while(m.find())
{
System.out.println(m.group() + " from " + m.start() + " to " + m.end());
}
int i=0;
while(m.find(i))
{
System.out.print(m.group() + "\t");
i++;
}
}
}
输出结果:
hello from 0 to 5
java from 6 to 10
hello ello llo lo o java java ava va a
例三:
public class Main {
public static void main(String[] args) throws IOException {
String [] mails =
{
"12@163.com",
"xiangjie55@qq.com",
"xj626852095@qq.com",
"xiangjie55@163.com",
"12@163.com"
};
String mailRegEx = "\\w{5,20}@\\w+\\.(com|org|cn|net)";
Pattern mailPattern = Pattern.compile(mailRegEx);
Matcher matcher = null;
for( String mail : mails )
{
if( matcher==null )
{
matcher = mailPattern.matcher(mail);
}
else
{
matcher.reset(mail);
}
if( matcher.matches() )
{
System.out.println(mail + " format is OK");
}
else
{
System.out.println(mail + " format is not OK");
}
}
}
}
输出结果:
12@163.com format is not OK
xiangjie55@qq.com format is OK
xj626852095@qq.com format is OK
xiangjie55@163.com format is OK
12@163.com format is not OK
浙公网安备 33010602011771号