请看源码?这是一个检测输入的IP是否全法的"正则表达式".public class RegExTest { public static void main (String[] args) { Scanner in = new Scanner (System.in); //System.out.println("Enter pattern:");//以前是通过手动输入表达式的,这里用不着所以先关闭. //String patternString = in.nextLine();
while (true) { System.out.println("Enter string to match:"); String input = in.nextLine();
if (input == null || input.equals("")) return;
Matcher matcher = pattern.matcher(input); if (matcher.matches()) { System.out.println("Match"); int g = matcher.groupCount(); if (g>0) { for (int i=0; i<input.length(); i++) { for (int j=1; j<=g; j++) if(i==matcher.start(j)) System.out.print('(');
2个问题,一个是你那个符号"|"是英文字符,在中文字符下不能保存,还有就是"\",需要变成"\\".("."不需要用"\")
并且不会改变它的原意.上述的方法我试过了,虽然可以达到保存到字符串对象中去.但是原因好像被改变了..再进行区配时就无法匹配了.请高手点拔.谢谢..
{
public static void main (String[] args)
{
Scanner in = new Scanner (System.in);
//System.out.println("Enter pattern:");//以前是通过手动输入表达式的,这里用不着所以先关闭.
//String patternString = in.nextLine();
String strIP1 = "(([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\. ";
String strIP2 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\.";
String strIP3 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))\\.";
String strIP4 = "(0|([1-9][0-9]?)|(1[0-9]{2})|(2[0-4][0-9]|25[0-5]))";
System.out.println(strIP1);
Pattern pattern = null;
try
{
pattern = Pattern.compile(strIP1);
}
catch (PatternSyntaxException e)
{
System.out.println("Pattern syntax error");
System.exit(1);
}
while (true)
{
System.out.println("Enter string to match:");
String input = in.nextLine();
if (input == null || input.equals("")) return;
Matcher matcher = pattern.matcher(input);
if (matcher.matches())
{
System.out.println("Match");
int g = matcher.groupCount();
if (g>0)
{
for (int i=0; i<input.length(); i++)
{
for (int j=1; j<=g; j++)
if(i==matcher.start(j))
System.out.print('(');
System.out.print(input.charAt(i));
for(int j=1; j<=g; j++)
if(i+1 == matcher.end(j))
System.out.print(')');
}
System.out.println();
}
}
else
System.out.println("No match");
}
}
}
//以上通过变量保存"正则表达式"的方法后,就无法正常匹配了,采用手工输入上述“正则表达式”是没有问题的。请大家检测。再请大家给出方法谢谢。。
只测试IP地址,第一段(先看能不能通过)。。输入10. 110. 192.手工方式都通过,通过保存变量后就无法匹配了。