正则表达式

yangjijiang_hunan 2016-01-28 01:51:42
这用正则怎么写:
192.168.*
192.168.C.D 的基础上,排除 (C段为8、9、96、97 和 74。当74时D段>=1并且D<=126 )。
...全文
148 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rickylin86 2016-01-29
  • 打赏
  • 举报
回复

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test{
	public static void main(String[] args){
		String[] ips = {
			"192.168.8.32", "192.168.9.32", "192.168.96.32",
            "192.168.97.32", "192.168.74.32", "192.168.74.251", "192.168.11.251"
		};

		for(String ip : ips){
			process(ip);
		}
	}

	private static boolean process(String ip){
		//不对值<=255判断.
		String regex = "^\\Q192.168.\\E((?!(8|9|96|97)[.])(?!74[.]([\\d&&[^0]]|[\\d&&[^0]]\\d|(1[01]\\d|12[0-6]))$))(?<c>\\d+)[.](?<d>\\d+)$";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(ip);
		boolean result = matcher.matches();
		if(result){
			System.out.print(ip + " is valid! ");
			System.out.println("[C:" + matcher.group("c") + ",D:" + matcher.group("d") + "]");
		}else{
			System.out.println(ip + " invalid!");
		}

		return result;
	}
}
tony4geek 2016-01-28
  • 打赏
  • 举报
回复
	String str[] = { "192.168.8.32", "192.168.9.32", "192.168.96.32",
				"192.168.97.32", "192.168.74.32", "192.168.74.251", "192.168.11.251" };
		for (int i = 0; i < str.length; i++) {
			Matcher m = Pattern.compile("192\\.168\\.(\\d+)\\.(\\d)").matcher(
					str[i]);
			if (m.find()) {
				if (!m.group(1).equals("8") && !m.group(1).equals("9")
						&& !m.group(1).equals("96") && !m.group(1).equals("97")) {
					if (m.group(1).equals("74")
							&& (Integer.parseInt(m.group(2)) >= 1 && Integer
									.parseInt(m.group(2)) <= 126)) {
						System.out.println(str[i]);
					} else {
						System.out.println(str[i]);
					}
				}
			}
		}

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧