Java 测试正则表达式(一)

本文主要测试字符类的用法,测试的结果作为注释放在测试方法的后面。

package regularexpression;

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

import org.junit.Test;

/**
 * 测试字符类;
 * @author yuncong
 *
 */
public class TestRegularExpression {
	/**
	 * 0. 单个字符匹配其本身
	 */
	@Test
	public void test0() {
		String regex = "d";
		String input = "1B2s-[[email protected]^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * d
	 */

	/**
	 * 1. [C1C2...],表示任何C1,C2,...中的某个字符,
	 * 其中Ci可以是是多个字符(如aB)、字符范围(如A-Z、
	 * a-z、0-9)或字符类(如[A-Z]、\d)
	 */
	@Test
	public void test1() {
		// 多个字符
		String regex = "[abcd]";
		String input = "1B2s23d3";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * d
	 */

	@Test
	public void test2() {
		// 字符范围
		String regex = "[A-za-z]";
		String input = "1B2s23d3";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * B
	 * s
	 * d
	 */

	@Test
	public void test3() {
		// 字符类
		String regex = "[[A-za-z][0-9]]";
		String input = "1B2s23d3";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * 1
	 * B
	 * 2
	 * s
	 * 2
	 * 3
	 * d
	 * 3
	 */

	/**
	 * 2. [^...],表示字符类的补集中的某个字符
	 */
	@Test
	public void test4() {
		String regex = "[^A-za-z]";
		String input = "1B2s23d3";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * 1
	 * 2
	 * 2
	 * 3
	 * 3
	 */

	/**
	 * 如果字符类包含^,^可以放在除开始位置之外的任何位置,
	 * 也就是说,只有当^放在开始位置时,才具有取补的功能
	 */
	@Test
	public void test5() {
		// 第二个^就是一个普通的匹配字符
		String regex = "[^0-9^]";
		String input = "1B2s2^[email protected]^3";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * B
	 * s
	 * d
	 * @
	 */

	/**
	 * 如果字符类包含-,-必须是第一项或者最后一项
	 */
	@Test
	public void test6() {
		String regex = "[-0-9]";
		String input = "[email protected]^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * 2
	 * -
	 * 2
	 * 3
	 * 3
	 */

	/**
	 * 如果字符类中包含[,必须放在第一项并且转义
	 */
	@Test
	public void test7() {
		String regex = "[\\[0-9]";
		String input = "1B2s-[[email protected]^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * 1
	 * 2
	 * [
	 * 2
	 * 3
	 * 3
	 */

	/**
	 * 3. [...&&...],两个字符类的交集
	 */
	@Test
	public void test8() {
		String regex = "[abcd&&a-z]";
		String input = "1B2s-[[email protected]^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * d
	 */

	/**
	 * 4. \w, 一个词语字符类(也就是一个单词中可能存在的字符),
	 * 等价于[A-Za-z0-9_]
	 */
	@Test
	public void test9() {
		String regex = "\\w";
		String input = "1B2s-[23d李@3^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * 1
	 * B
	 * 2
	 * s
	 * 2
	 * 3
	 * d
	 * 3
	 */

	/**
	 * 5. \p{name}, 表示一个命名字符类
	 */
	@Test
	public void test10() {
		String regex = "\\p{Upper}";
		String input = "1B2s-[23d李@3^";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(input);
		while (matcher.find()) {
			String output = matcher.group();
			System.out.println(output);
		}
	}
	/**
	 * 输出:
	 * B
	 */
}
时间: 2024-10-17 00:54:02

Java 测试正则表达式(一)的相关文章

Java 测试正则表达式(二)

本文主要测试量词和量词后缀的用法,测试的结果作为注释放在测试方法的后面. package regularexpression; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; /** * 测试量词和量词后缀: * X和Y是正则表达式 * @author yuncong * */ public class TestRegularExpression2 { /** * XY表

Java正则表达式——测试正则表达式的一个小工具

正则表达式是一种强大而灵活的文本处理工具.使用它我们能以编程的方式,构造复杂的文本模式,并对输入的字符串进行搜索.一旦找到了匹配这些模式的部分,你就能够随心所欲地对它们进行处理. 关于正则表达式的语法,网上对此有介绍的文章实在是多不胜数,实在找不到,还可以查看Java的API文档,就不多介绍了.这里主要介绍一个可以测试正则表达式的小工具.直接上代码: 1 package com.test.stringregex; 2 //{Args: abcabcabcdefabc "abc+" &q

java常用正则表达式

java常用正则表达式 1.^\d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-\d+) ?(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9]*[1-9][0-9]*$ //匹配负整数 5.^-?\d+$ //匹配整数 6.^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0) 7.^(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+)

JAVA测试编程知识点

JAVA测试编程会涉及的知识点: 1.      testNg框架 2.      http协议和HttpClient. 在依据http头进行不同数据解析: Transfer-Encoding:chunked 在chunked 为ture时接口分段传数据怎么解析处理 chunked 不为ture时接口测试已可以处理. Content-Encoding: gzip 接口数据压缩的怎么解析处理 结合Transfer-Encoding:chunked为ture时接口数据怎么解析处理 不同Content

1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA代码,实现一个支持常用功能的正则表达式引擎.它支持贪婪匹配和懒惰匹配:支持零宽度字符(如"\b", "\B"):支持常用字符集(如"\d", "\s"等):支持自定义字符集("[a-f]","[^b-

第一次Java测试及感触

周四进行了java测试,感触很深,测试的题目是用Java实现一个ATM机的管理系统.最后3个小时后,我没有完成这次测试,但是我找到了自己的很多不足,明确了自己的问题究竟在哪里. 关于这次测试我不会的最大问题是关于文件读写操作模拟数据库,其实好像从C语言开始,我对文件就不怎么会用,然后到了C++,现在的java,我依旧还是不太会用,这个问题真的很严重,它反映出我从来没有真正地去把文件操作弄懂学会,导致现在,,,测试结束以后,我从网上学习了java文件操作,下面这是一个文件写入模块和文件读写模块 1

Java中用正则表达式找出数字

Java中用正则表达式找出数字 1.题目    String str = "fjd789klsd908434jk#$$%%^38488545",从中找出78990843438488545,请找到解决办法 2.实现源码 /** * */ package com.you.model; /** * @author YouHaidong * */ public class FindNumber { /** * 字符串str */ public static String str = "

java测试网络连接是否成功并设置超时时间

/** * 获取RMI接口状态 * * @return "0":服务正常,"1": 连接报错,"2":连接超时 */ @Override public String getRMIJkzt() { final ExecutorService es = Executors.newFixedThreadPool(1); Callable<String> callable = new Callable<String>() {//使

java中 正则表达式的使用

推荐使用第一种 第一种: //对接收的文件名的合法性进行验证 String fileName="127.0.0.1_01_20140428165022174.jpg"; String regEx = "\\b.+_\\d+_\\d{17}\\b"; //正则表达式 Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(fileName); if(!m.find()){ SysLog.logger.erro