下面是我的代码import java.util.regex.Pattern;
import java.util.*;
public class Regular_expression
{
public static void main(String[] args)
{
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
Scanner input1=new Scanner(System.in);
System.out.println("请输入要匹配的邮箱:");
String patternString=input1.nextLine();
boolean result=pattern.matcher(patternString).matches();
if(result)
System.out.println("匹配成功!");
else System.out.println("匹配失败!");
}
}
编译时报错如下
Regular_expression.java:7: 非法转义字符
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
^
Regular_expression.java:7: 非法转义字符
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
匹配点号不是加\就行了吗,怎么错了?
import java.util.*;
public class Regular_expression
{
public static void main(String[] args)
{
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
Scanner input1=new Scanner(System.in);
System.out.println("请输入要匹配的邮箱:");
String patternString=input1.nextLine();
boolean result=pattern.matcher(patternString).matches();
if(result)
System.out.println("匹配成功!");
else System.out.println("匹配失败!");
}
}
编译时报错如下
Regular_expression.java:7: 非法转义字符
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
^
Regular_expression.java:7: 非法转义字符
Pattern pattern=Pattern.compile("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$");
匹配点号不是加\就行了吗,怎么错了?
但是如果要在一个java String表示一个\,你在录入代码的时候,需要\\所以,推理可以得知正则中表达一个\字符,在java String中是String regex = "\\\\"
其中,第一第三个是java字符串的转义,后面均更随\,表示两个java String的\,其中第一个代表正则的转义符