1.正则表达式
正则表达式,又称正规表示法、常规表示法(Regular Expression,常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
2.元字符:
元字符
正则表达式的写法
意义
. |
“.” |
任意一个字符 |
^ |
“^Spring” |
以Spring开始的字符 |
$ |
“EEEE$” |
匹配行结束符,以”EEEE”结束的字符 |
\d |
“\d” |
0-9的任何一个数字 |
\D |
“\D” |
任何一个非数字字符 |
\s |
“\s” |
空白字符,如”\t”,”\n” |
\S |
“\S” |
非空白字符 |
\w |
“\w” |
可用作标识符的字符,但不包括“$” |
\W |
“\W” |
不可用作标识符的字符 |
\p{Lower} |
\p{Lower} |
小定字母a-z |
\p{Upper} |
\p{Upper} |
大写字母A-Z |
\p{ASCII} |
\p{ASCII} |
ASCII字符 |
\p{Alpha} |
\p{Alpha} |
字母字符 |
\p{Digit} |
\p{Digit} |
十进制数字,0-9 |
\p{Alnum} |
\p{Alnum} |
数字或字母字符 |
\p{Punct} |
\p{Punct} |
标点符号:!“#%&()*=- |
\p{Graph} |
\p{Graph} |
可见字符:[\p{Alnum}\p{Punct}] |
\p{Print} |
\p{Print} |
可打印字符[\p{Graph}\x20] |
\p{Blank} |
\p{Blank} |
空格或制表符:[\t] |
\p{Cntrl} |
\p{Cntrl} |
控制字符:[\x00-\x1F\x7F] |
3.方括号
方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
reg=“[abc]4”—– 则”a4”,”b4”,”c4”,都是和此正则表达式匹配的字符串
方括号例子
意义
[^456] |
代表4,5,6之外的任何字符 |
[a-r] |
代表a~r中的任何一个字母 |
[a-Za-Z] |
代表任意一个英文字母 |
[a-e[g-z]] |
代表a~e或g~z中的任意一个字母 |
[a-o&&[def]] |
代表字母d,e,f(交运算) |
[a-o&&[^bc]] |
代表字母a,d(差运算) |
4.()–小括号
将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。
5.限定修饰符
使用限定修饰符来限定元字符出现的次数
限定修饰符
意义
示例
? |
0次或1次 |
A? |
* |
0次或多次 |
A* |
+ |
1次或多次 |
A+ |
{n} |
正好出现n次 |
A{2} |
{n,} |
至少出现n次 |
A{2,} |
{n,m} |
出现n到m次 |
A{2,6} |
6.样例
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class Regular {
//字符串是否是数字
public static String regexIsDigital = “\d+”;
//字符串是否是字母
public static String regexIsAlpha =”\p{Alpha}+”;
//字符串是否是15位或18位的身体证号码
public static String regexIsID=”\d{15}|\d{18}”;
//字符串是否是JJJ开头KKK结尾
public static String regexIsJJJStartKKKEnd=”^JJJ.*KKK$”;
//字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字
public static String regexIsTelePhoneNumber =”[0-9]{3,4}\-?[0-9]+”;
//X@X.com.cn
public static String regexIsEmail = “\w+@\w+(\.\w{2,3})*\.\w{2,3}”;
//字符串是否是汉字
public static String regexIsHanZi=”[\u4e00-\u9fa5]{1,}”;
//查找以Java开头,任意结尾的字符串
public static String regexIsStartJava = “^Java.*”;
//以多条件分割字符串时
public static String regexSplit =”[, |]+”;
public static void main(String[] args) {
testIsDigit();
testIsAlpha();
testIsID();
testStartEnd();
testIsTelePhoneNum();
testEmailAddre();
testIsHanZi();
testIsStartJava();
testSplit();
testReplace();
testPattern();
}
private static void testPattern() {
Pattern pattern = Pattern.compile("");
System.out.println(pattern.matches("[0-9]{6}", "200038"));
System.out.println(pattern.matches("\\d{6}", "200038"));
}
private static void testReplace() {
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换第一个符合正则的数据
System.out.println(matcher.replaceFirst("Java"));
pattern = Pattern.compile("正则表达式");
matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
//替换所有符合正则的数据
System.out.println(matcher.replaceAll("Java"));
}
private static void testSplit() {
Pattern pattern = Pattern.compile(regexSplit);
String data = "Java Hello World Java,Hello,,World|Sun";
System.out.println(data+" split by:"+regexSplit);
String[] strs = pattern.split(data);
for (int i=0;i<strs.length;i++) {
System.out.println(strs[i]);
}
}
private static void testIsStartJava() {
pressInfoByPattern("Java不是人",regexIsStartJava);
pressInfoByPattern("dJava不是人",regexIsStartJava);
}
private static void testIsHanZi() {
pressInfo("验证汉字",regexIsHanZi);
}
private static void testIsTelePhoneNum() {
pressInfo("0733-5544",regexIsTelePhoneNumber);
pressInfo("073-566544",regexIsTelePhoneNumber);
pressInfo("073566544",regexIsTelePhoneNumber);
pressInfo("073--566544",regexIsTelePhoneNumber);
}
private static void testStartEnd() {
pressInfo("JJJKKK",regexIsJJJStartKKKEnd);
pressInfo("JJJaaaaKKK",regexIsJJJStartKKKEnd);
pressInfo("JJaaaaKKK",regexIsJJJStartKKKEnd);
pressInfo("JJJaaaaKK",regexIsJJJStartKKKEnd);
}
private static void testIsID() {
pressInfo("111111111111111",regexIsID);
pressInfo("11111111111111",regexIsID);
pressInfo("111111111111122221",regexIsID);
pressInfo("11111111111112222",regexIsID);
}
private static void testIsAlpha() {
pressInfo("da",regexIsAlpha);
pressInfo("d1a",regexIsAlpha);
}
private static void testIsDigit() {
pressInfo("21452",regexIsDigital);
pressInfo("21a452",regexIsDigital);
pressInfo("021452",regexIsDigital);
}
private static void testEmailAddre() {
pressInfo("aaa@",regexIsEmail);
pressInfo("aaaaaaaa",regexIsEmail);
pressInfo("11111@11111fffyu.dfg.com",regexIsEmail);
}
private static void pressInfo(String data,String regex) {
if(data.matches(regex)){
System.out.println(data+":is match regex:"+regex);
}else{
System.out.println(data+":is not match regex:"+regex);
}
}
private static void pressInfoByPattern(String data,String regex) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(data);
if(matcher.matches()){
System.out.println(data+":is match regex:"+regex);
}else{
System.out.println(data+":is not match regex:"+regex);
}
}
分享到:
相关推荐
在Qt框架中,正则表达式(Regular Expression)是一种强大的文本处理工具,它允许程序员以结构化的方式匹配、查找、替换或验证字符串。本项目针对Qt的lineEdit组件,通过正则表达式实现了输入限制功能,使得lineEdit...
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换等操作,涉及字符串处理的各个领域。正则表达式转换工具是专门针对这一需求而设计的,它能帮助用户将输入的内容转换...
在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...
C语言正则表达式库是用于在C编程环境中处理和匹配正则表达式的软件库。这个库名为PCRE(Perl Compatible Regular Expressions),正如其名,它与Perl语言中的正则表达式语法高度兼容,提供了丰富的功能和强大的匹配...
例如,"子程序_正则文本替换"可能就是一个易语言中用于执行正则表达式替换的子程序,它接收输入的文本、正则表达式模式和替换字符串,然后返回经过替换操作的新文本。 1. **正则表达式基础** - **元字符**:如`.`...
标题中的“pb 使用正则表达式源码pbregexp”指的是在PowerBuilder(简称pb)环境中,利用名为“pbregexp”的正则表达式组件来实现源代码级别的正则表达式操作。PowerBuilder是一款流行的可视化的、面向对象的软件...
Java使用正则表达式提取XML节点内容的方法示例 Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作...
在易语言中,正则表达式是进行文本处理、数据提取和搜索的关键工具,尤其在处理中文字符时显得尤为重要。本文将深入探讨易语言中的正则表达式匹配中文的原理、方法以及应用。 正则表达式(Regular Expression)是一...
正则表达式(Regular Expression,简称regex)是用于在文本中匹配特定模式的强大工具,广泛应用于数据验证、搜索替换和文本处理等领域。正则表达式调试工具是开发人员用来测试和优化这些模式的重要辅助工具。本文将...
正则表达式类库则为VC++和MFC的开发者提供了对正则表达式功能的支持。 "VC、VC++,MFC 正则表达式类库"指的是在MFC中实现或集成的正则表达式处理模块。这个库通常包含一系列的类和函数,允许程序员编写符合特定模式...
在易语言中,正则表达式类是一个非常重要的工具,用于处理字符串的模式匹配和查找。在处理中文文本时,这个功能尤为关键,因为中文字符的编码和处理方式与英文有所不同。 正则表达式是用于匹配字符串模式的一种强大...
正则表达式是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索。在C#编程语言中,正则表达式被广泛应用于数据验证、文本提取、格式转换等多个场景。本项目提供了一个C#编写的正则表达式测试工具,包含完整...
在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。C++作为一种通用编程语言,虽然标准库中没有内置正则表达式支持,但通过第三方库如Boost,我们可以很方便地在...
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配、查找、替换等操作,涉及字符串的模式匹配。在本主题中,我们将深入探讨如何使用正则表达式来生成满足特定条件的随机数据。这在...
C# 正则表达式大全 正则表达式是指用来描述字符串模式的表达式,通过使用正则表达式,我们可以轻松地实现字符串的匹配、验证、提取和替换等操作。在 C# 中,我们可以使用 System.Text.RegularExpressions 命名空间...
在IT领域,正则表达式库是用于处理字符串匹配、搜索和替换的重要工具。在C语言环境中,GUN(GNU)提供了一个官方的正则表达式库,这使得C程序员可以方便地在他们的应用程序中利用正则表达式的强大功能。本篇文章将...
在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在本案例中,“易语言正则表达式取网址和名称”指的是使用易语言这一编程环境,结合正则表达式技术来从文本中...
正则表达式作为一种文本处理工具,在计算机编程和数据处理领域中扮演着极其重要的角色。它不仅适用于几乎所有编程语言和计算机平台,而且能够执行复杂的文本搜索、匹配、替换和提取操作。正则表达式的核心是通过定义...
在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配字符串模式。它们广泛应用于数据验证、搜索、替换等操作。本话题主要关注如何根据正则表达式生成满足该模式的数据,这在测试、数据...
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取特定模式的字符串。RegexTest.exe 是一个专门用于测试和解析正则表达式的应用程序,它可以帮助用户理解和调试...