正则表达式学习

/**
 * JAVA中的正则表达式
 */

package test.regex;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegexExample {

	/**
	 * 
	 * @param args
	 */

	public static void main(String[] args) {

		System.out.println("1———");

		RegexExample.getNameFormPath();

		System.out.println();

		System.out.println("2———");

		RegexExample.printPostNo();

		System.out.println();

		System.out.println("3———");

		RegexExample.getMonthFormText();

		System.out.println();

		System.out.println("4———");

		RegexExample.replaceString();

		System.out.println();

		System.out.println("5———");

		RegexExample.printIdCord();

		System.out.println();

		System.out.println("6———");

		RegexExample.getChcn();

		System.out.println();

		System.out.println("7———");

		RegexExample.getEmail();

		System.out.println();

		System.out.println("8———");

		RegexExample.extractURL();

	}

	/**
	 * 
	 * 从文件路径中提取文件名,含后缀
	 * 
	 * 
	 * 
	 * 正则表达式中 "."表示匹配仍何单个字符
	 * 
	 * ".+"表示匹配任何一个个或多个字符
	 * 
	 * ".+/(.+)$"表示以任意字符开始,任意字符结尾,中间包含"/"
	 * 
	 * "()"代表分组操作
	 * 
	 * Matcher类的group的索引值以1开始
	 */

	public static void getNameFormPath() {

		System.out.println("从文件路径中提取文件名,含后缀———–Start————");

		// 定义字符串路径

		String path = "c:/dir/dir2/name.txt";

		System.out.println(path);

		// 定义正则表达式, 以任何字符开头,仍和字符结尾,中间用"/"分隔的字符串,对最有一个/分隔出的字符串分组

		String regEx = ".+/(.+)$";

		// 得到正则表达式模型对象

		Pattern p = Pattern.compile(regEx);

		// 得到匹配结果对象

		Matcher m = p.matcher(path);

		// 如果不存在匹配

		if (!m.find())
			System.out.println("文件路径格式错误!");

		else

			// 打印正则表达式中定义分组中的第一个

			System.out.println(m.group(1));

		System.out.println("从文件路径中提取文件名,含后缀———–Start————");

	}

	/**
	 * 
	 * 邮政编码的正则表达式
	 * 
	 * 
	 * 
	 * [0-9]{6}表示0到9直接的数字任意6个
	 * 
	 * \d与[0-9]意思相同,\d在JAVA字符串中转义之前为"\\d"
	 */

	public static void printPostNo() {

		System.out.println("邮政编码的正则表达式———–Start————");

		String a = "200100";

		System.out.println(a);
		System.out.println(Pattern.matches("\\d{6}", a));

		String b = "as6554";

		System.out.println(b);

		System.out.println(Pattern.matches("[0-9]{6}", b));

		System.out.println("邮政编码的正则表达式————End————-");

	}

	/**
	 * 
	 * 从字符串"June 26, 1951″中提取出月份
	 * 
	 * 
	 * 
	 * \\s表示换行指标空格等空白字符
	 */

	public static void getMonthFormText() {

		System.out.println("从字符串\"June 26, 1951\"中提取出月份———–Start————");

		String strdate = "June 26, 1951";

		System.out.println(strdate);

		String regEx = "([a-zA-Z]+)\\s+[0-9]{1,2},\\s*[0-9]{4}";

		Pattern p = Pattern.compile(regEx);

		Matcher m = p.matcher(strdate);

		if (!m.find())
			System.out.println("日期格式错误!");

		else
			System.out.println(m.group(1));

		System.out.println("从字符串\"June 26, 1951\"中提取出月份————End————-");

	}

	/**
	 * 
	 * 把字符串中所有一个或多个a的地方都替换成A, 如 aaaa -> A
	 */

	public static void replaceString() {

		System.out.println("把字符串中所有一个或多个a的地方都替换成A———–Start————");

		String str = "okaaaaa Let meaaaaseeaa aa ! aohaa myaa godaa !a";

		System.out.println(str);

		String regEx = "a+";

		Pattern p = Pattern.compile(regEx);

		Matcher m = p.matcher(str);

		String s = m.replaceAll("A");

		// Easy AdSense by Unreal
		System.out.println(s);

		System.out.println("把字符串中所有一个或多个a的地方都替换成A————End————-");

	}

	/**
	 * 
	 * 验证身份证号码
	 */

	public static void printIdCord() {

		System.out.println("验证身份证号码———–Start————");

		String id = "429006198203070318";

		System.out.println(Pattern.matches("\\d{15}|\\d{18}", id));

		System.out.println(Pattern.matches("[0-9]{18}|[0-9]{15}", id));

		System.out.println("验证身份证号码————End————-");

	}

	/**
	 * 
	 * 中文提取 不包含中文标点
	 * [\\u4E00-\\u9FFF]+ (不包含中文标点)
	 */

	public static void getChcn() {

		System.out.println("中文提取———–Start————");

		String str = "welcome to china, 肖曲来, yes, 谢 谢;";

		System.out.println(str);

		Pattern p = Pattern.compile("[\\u4E00-\\u9FFF]+");

		Matcher m = p.matcher(str);

		String s = "";

		while (m.find()) {

			s = s + m.group();

		}

		System.out.println(s);

		System.out.println("中文提取————End————-");

	}

	/**
	 * 
	 * 验证Email地址
	 * \\w 等价于 [a-zA-Z0-9_]
	 */

	public static void getEmail() {

		System.out.println("验证Email地址———–Start————");

		String email = "asdf@asd.com";

		System.out.println(email);

		String regEx = "\\w+@\\w+\\.\\w+";

		Pattern p = Pattern.compile(regEx);

		Matcher m = p.matcher(email);

		if (m.matches())
			System.out.println("合法的Email");

		else
			System.out.println("不合法的Email");

		email = "ad_sdf@___.___";

		System.out.println(email);

		m = p.matcher(email);

		if (m.matches())
			System.out.println("合法的Email");

		else
			System.out.println("不合法的Email");

		System.out.println("验证Email地址———–Start————");

	}

	/**
	 * 
	 * 解析URL
	 * 
	 * [^#] 表示不能包含"#"
	 */

	public static void extractURL() {

		RegexExample.URLInfo urlInfo = new RegexExample().new URLInfo();

		String strUrl = "ftp://www.ftp.com/incoming/movie.rm";

		System.out.println(strUrl);

		String regEx = "([a-zA-Z]+)://([a-zA-Z0-9]+[\\w-\\.]+[a-zA-Z0-9]+)(:\\d{2,5}){0,1}/([^#]*)";

		Pattern p = Pattern.compile(regEx);

		Matcher m = p.matcher(strUrl);

		if (m.find()) {

			urlInfo.protocal = m.group(1);

			urlInfo.host = m.group(2);

			urlInfo.port = m.group(3);

			urlInfo.path = m.group(4);

		}

		System.out.println("protocal=" + urlInfo.protocal);

		System.out.println("host=" + urlInfo.host);

		System.out.println("port=" + urlInfo.port);

		System.out.println("path=" + urlInfo.path);

		String strUrl2 = "http://www.sina.com.cn:8080/asdf/aasdf.jsp?proc=aid";

		System.out.println(strUrl2);

		m = p.matcher(strUrl2);

		if (m.find()) {

			urlInfo.protocal = m.group(1);

			urlInfo.host = m.group(2);

			urlInfo.port = m.group(3);

			urlInfo.path = m.group(4);

		}

		System.out.println("protocal=" + urlInfo.protocal);

		System.out.println("host=" + urlInfo.host);

		System.out.println("port=" + urlInfo.port);

		System.out.println("path=" + urlInfo.path);

	}

	class URLInfo {

		private String protocal;

		private String path;

		private String host;

		private String port;

	}

	/**
	 * 
	 * UBB代码 翻译
	 */

	public static void txUBB() {

	}

}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值