学习基础,做了一些实验,现在将那些东西贴上。
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestPattern {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
testMatchTime();
}
public static void testFullStop() {
// "."匹配任意一个字符
String str1 = "a c";
String str2 = "abcddefc";
String regex = "a.c";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str1);
System.out.println("match result: " + m.matches());
}
public static void testSquareBrackets() {
// "[]"匹配[]里面的任意一个字符
String str1 = "acf";
String regex = "a[abcdef]f";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str1);
System.out.println("match result: " + m.matches());
}
public static void testOR() {
// "|"匹配或的关系,用小括号配合"或"关系
String str1 = "acf";
String regex = "a(a|b|c)f";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str1);
System.out.println("match result: " + m.matches());
}
public static void testMatchTime() {
// 测试匹配次数,?匹配0次或1次
String str2 = "abc";
String regex2 = "ab?c";
Pattern p2 = Pattern.compile(regex2);
Matcher m2 = p2.matcher(str2);
System.out.println("match result?: " + m2.matches());
// 测试匹配次数,*匹配0个或多个左边字符
String str1 = "aaaaaaf";
String regex1 = "a*f";
Pattern p = Pattern.compile(regex1);
Matcher m = p.matcher(str1);
System.out.println("match result*: " + m.matches());
// 测试匹配次数,+匹配1次或多次左侧紧挨的字符
String str3 = "aaab";
String regex3 = "a+b";
Pattern p3 = Pattern.compile(regex3);
Matcher m3 = p3.matcher(str3);
System.out.println("match result+: " + m3.matches());
//测试组合[]+,匹配小写字母
String str31 = "aaab";
String regex31 = "[a-z]+";
Pattern p31 = Pattern.compile(regex31);
Matcher m31 = p31.matcher(str31);
System.out.println("match result []+: " + m31.matches());
// 测试匹配次数,{n}恰好n次
String str4 = "aaab";
String regex4 = "a{3}b";
Pattern p4 = Pattern.compile(regex4);
Matcher m4 = p4.matcher(str4);
System.out.println("match result{n}: " + m4.matches());
// 测试匹配次数,{n,m}恰好n次~m次
String str5 = "aaaab";
String regex5 = "a{3,5}b";
Pattern p5 = Pattern.compile(regex5);
Matcher m5 = p5.matcher(str5);
System.out.println("match result{n,m}: " + m5.matches());
// 测试匹配次数,组合11-222-333
// "-"表示范围,"\"表示转义
String str6 = "11-222-3333";
String regex6 = "[0-9]{2}\\-[0-9]{3}\\-[0-9]{4}";
Pattern p6 = Pattern.compile(regex6);
Matcher m6 = p6.matcher(str6);
System.out.println("match result: " + m6.matches());
// 测试匹配次数,组合11-222-333
// "-"表示范围,"\"表示转义
String str7 = "11-2223333";
String regex7 = "[0-9]{2}\\-?[0-9]{3}\\-?[0-9]{4}";
Pattern p7 = Pattern.compile(regex7);
Matcher m7 = p7.matcher(str7);
System.out.println("match result: " + m7.matches());
}
public static void testNot() {
// 测试"^"符号,[^X],用在方括号内表示不想匹配的字符。
String str = "abc";
String regex = "[^de]bc";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println("match result: " + m.matches());
}
public static void test_d() {
// 测试"\\d"符号,等价[0-9]。
String str = "1bc";
String regex = "[0-9]bc";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
System.out.println("match result: " + m.matches());
String str2 = "1bc";
String regex2= "\\dbc";
Pattern p2 = Pattern.compile(regex2);
Matcher m2 = p2.matcher(str2);
System.out.println("match result: " + m2.matches());
}
public static void test_w() {
// 测试"\\w"符号,等价[0-9]。
String str1 = "Abc";
String str2 = "1bc";
String regex = "[A-Z0-9]bc";
Pattern p1 = Pattern.compile(regex);
Matcher m1 = p1.matcher(str1);
System.out.println("match result: " + m1.matches());
Pattern p2 = Pattern.compile(regex);
Matcher m2 = p2.matcher(str2);
System.out.println("match result: " + m2.matches());
String str3 = "2bc";
String regex3= "\\wbc";
Pattern p3 = Pattern.compile(regex3);
Matcher m3 = p3.matcher(str1);
System.out.println("match result: " + m3.matches());
}
}
----------------------------
正则表达式匹配标点符号的方法
Posted by gezhe on 五月 25th 2011 @ 12:23 下午
str = str.replaceAll(“[\\pP‘’“”]“, “”);
Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类。
\pP 其中的小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。
大写 P 表示 Unicode 字符集七个字符属性之一:标点字符。
其他六个是
L:字母;
M:标记符号(一般不会单独出现);
Z:分隔符(比如空格、换行等);
S:符号(比如数学符号、货币符号等);
N:数字(比如阿拉伯数字、罗马数字等);
C:其他字符
-----------------------------
应用:
1.匹配中间全角、半角空格(网上的一般匹配的都不太理想,这是本人原创):
Pattern p = null; // 样式
Matcher m = null; // 匹配者
boolean b = false;
String strVerify="校 对";
p = Pattern.compile("校[\\pZ\\s]+对");
m = p.matcher(strVerify);
b = m.matches();
System.out.println(b);
==========================================================
正则表达式的关系:
包含关系
String strVerify="dddd份 数: 打 印: 校 对:ddddddd ";
p = Pattern.compile("校[\\pZ\\s]+对");
m = p.matcher(strVerify);
if(m.find()){
System.out.println("HHH");
}
匹配关系:
前面,多有所述,不再累述。
分享到:
相关推荐
【正则表达式实验报告1】 实验主要涉及两个核心知识点:使用正则表达式匹配IP地址和HTML中a标签的链接。在这个实验中,开发者使用C#编程语言,并借助Greta库来实现正则表达式的操作。 1. **匹配IP地址的正则表达式...
在"www.pudn.com.txt"和"AutoMake5.0"这两个文件中,可能包含了实现上述正则表达式到NFA转换的详细步骤、代码示例或者实验指导。"www.pudn.com.txt"可能是实验说明文档,解释了如何将正则表达式转换为NFA的详细过程...
正则表达式实例汇总 正则表达式是 JavaScript 中一个非常重要的概念,它可以用来匹配、验证和操作字符串。在这篇文章中,我们将总结一些常用的正则表达式实例,涵盖了数字、空格、电话号码、手机号码、字符串等多...
C#正则表达式是.NET框架中用于处理文本模式匹配和数据提取的强大工具。它基于Perl风格的正则表达式,允许程序员通过简洁的语法来执行复杂的文本操作。本专题学习将深入探讨C#正则表达式的使用,帮助开发者更好地理解...
这是编译原理的一个实验, 是把一个正则表达式转化为不确定有穷自动机NFA的算法程序,朋兴趣的朋友可以下载来看看哦. 一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式...
Java 正则表达式,简称 `regx`,是一种强大的文本处理工具,它允许程序员通过预定义的模式来查找、替换或操作字符串。虽然在Java规范需求(Specification Request)中正则表达式的支持是在后续版本引入的,但在早期...
理解元字符、量词和分组是基础,然后可以通过在线测试工具(如Regex101、RegExr)进行实验,逐步提高对正则表达式的理解。 在实际应用中,注意避免过于复杂的正则表达式,保持代码的可读性。同时,要熟悉目标环境...
通过"正则表达式测试工具",开发者可以方便地进行各种正则表达式实验,提高开发效率,避免因正则错误导致的问题。MTracer可能是这样的工具,提供了丰富的测试和调试功能,使得JavaScript中的正则表达式工作变得更加...
【字符串与正则表达式】 在Python编程中,字符串是数据类型之一,广泛应用于文本处理。第五章“字符串与正则表达式”深入探讨了这一关键主题,旨在帮助初学者和有经验的开发者更好地理解和使用字符串及正则表达式。...
### 正则表达式转化为NFA(非确定有限自动机):深度解析 #### 引言 正则表达式转化为NFA是计算机科学中的一个重要概念,尤其在编译原理、文本处理以及模式匹配等领域有着广泛的应用。通过将正则表达式转化为NFA,...
### Python正则表达式详解 #### 一、概述 Python中的正则表达式(re)模块提供了与Perl类似的正则表达式功能。无论是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这意味着该模块能够很好地处理各种字符...
通过不断地练习和实验,你会逐渐掌握正则表达式的精髓,从而在易语言编程中游刃有余。 在提供的压缩包文件“正则表达式.e”中,可能包含了易语言关于正则表达式的实例代码或者教程。通过学习这些资源,你可以更深入...
最后,“正则表达式基础_Linux_实验楼 - 实验楼.url”可能指向一个在线实验平台,提供实际操作的环境,让读者能够动手实践,巩固所学的正则表达式知识。 综上所述,这个压缩包文件合集详细地介绍了Linux环境中如何...
实验十一的主要目标是深入理解和熟练运用字符串的创建、管理以及格式化,同时掌握正则表达式的运用,这些是C#开发中不可或缺的技能。 首先,我们要了解字符串的创建。在C#中,可以使用双引号来直接初始化一个字符串...
输入一个正则表达式,然后将此正则表达式转换为NFA,最后将此NFA输出 【实验要求】: 写出程序运行环境, 体会,程序结构,程序清单, 典型结果,以及结果分析 【程序运行环境】: 此程序是在Visual C++下,新建一...
本次实验旨在通过实践加深对正则表达式的理解,并学习如何在Python中使用正则表达式来处理文本数据。 实验的第一部分介绍了正则表达式的基本使用方法,包括非编译和编译两种方式。非编译方式下,使用`re.findall()`...
正则表达式是计算机科学中用于模式匹配的强大工具,它能简洁地表示一系列字符串的集合。在编程语言和文本处理领域,正则表达式被广泛应用于数据验证、搜索和替换等任务。另一方面,自动机是一种理论计算模型,它可以...
### 正则表达式应用总结 #### 一、概述 正则表达式是计算机科学领域内一种用于描述字符串模式的强大工具,在多种编程语言中均有应用。对于Java而言,正则表达式更是处理字符串和文本数据不可或缺的一部分。Java...
在实际应用中,结合RegexTest.exe这样的工具,你可以不断实践和实验,提升对正则表达式的掌握。同时,阅读匹配规则.txt和metacharacters.xml文件,将加深你对正则表达式语法的理解。通过学习和使用这些资源,你将...
代码相对简单; c语言实现; 正则表达式转换为nfa;