正则表达式及小例子

合集下载

JS正则表达式大全

JS正则表达式大全

JS正则表达式大全JS正则表达式大全【1】正则表达式中的特殊字符【留着以后查用】字符含意\ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。

-或-对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa+ 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa? 匹配前面元字符0次或1次,/ba*/将匹配b,ba(x) 匹配x保存x在名为$1...$9的变量中x|y 匹配x或y{n} 精确匹配n次{n,} 匹配n次以上{n,m} 匹配n-m次[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)[^xyz] 不匹配这个集合中的任何一个字符[\b] 匹配一个退格符\b 匹配一个单词的边界\B 匹配一个单词的非边界\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M\d 匹配一个字数字符,/\d/ = /[0-9]/\D 匹配一个非字数字符,/\D/ = /[^0-9]/\n 匹配一个换行符\r 匹配一个回车符\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/\t 匹配一个制表符\v 匹配一个重直制表符\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

排除特殊字符的正则表达式

排除特殊字符的正则表达式

排除特殊字符的正则表达式在编程中,正则表达式是一种强大的工具,用于匹配和处理字符串。

正则表达式可以帮助我们筛选和处理文本中的特定字符,但有时我们需要排除一些特殊字符。

本文将介绍如何使用正则表达式来排除特殊字符,以及一些常见的应用场景。

一、什么是特殊字符特殊字符是指那些在文本中具有特殊意义的字符,包括但不限于以下几种类型:1. 标点符号:例如逗号、句号、问号等;2. 数字和字母:虽然数字和字母不一定被认为是特殊字符,但在某些情况下,我们可能需要排除它们;3. 控制字符:例如换行符、制表符等;4. 特殊符号:例如美元符号、百分号、井号等。

二、排除特殊字符的正则表达式要排除特殊字符,我们可以使用正则表达式中的反向字符类。

反向字符类以^符号开头,用于匹配除指定字符之外的所有字符。

下面是一个简单的例子,演示如何使用正则表达式排除特殊字符:```[^a-zA-Z0-9\u4e00-\u9fa5]```上述正则表达式将匹配除了大小写字母、数字和中文字符之外的所有字符。

其中,a-zA-Z表示所有的大小写字母,0-9表示所有的数字,\u4e00-\u9fa5表示中文字符的 Unicode 编码范围。

三、应用场景1. 清洗文本数据:在进行文本挖掘和自然语言处理时,我们经常需要清洗文本数据,去除特殊字符。

使用排除特殊字符的正则表达式可以帮助我们快速过滤掉无用的字符。

例如,我们有一个包含特殊字符的字符串:"Hello, 你好!123456",我们可以使用正则表达式`[^a-zA-Z0-9\u4e00-\u9fa5]`将特殊字符排除,得到一个干净的字符串:"Hello 你好 123456"。

2. 密码验证:在用户注册或登录时,我们通常要求密码包含特定类型的字符,例如至少一个大写字母、一个小写字母和一个数字。

如果用户输入的密码中包含特殊字符,我们可能希望排除这些特殊字符,以确保密码符合要求。

整数或小数正则表达式

整数或小数正则表达式

整数或小数正则表达式
在编程中,经常需要使用正则表达式来匹配数字,尤其是整数和小数。

以下是一些常用的正则表达式:
1. 匹配整数:
^[1-9]d*$
解析:^ 表示开头,[1-9] 表示第一个数字不能为0,d* 表示0个或多个数字,$ 表示结尾。

例如,123、456、789 这些都是符合要求的整数。

2. 匹配负整数:
^-[1-9]d*$
解析:与匹配整数相同,只是在开头加了一个负号。

例如,-123、-456、-789 这些都是符合要求的负整数。

3. 匹配小数:
^[1-9]d*.d+|0.d*[1-9]d*$
解析:^ 表示开头,[1-9]d* 表示整数部分为1-9开头的数字,.d+ 表示小数点后面至少有一位数字,| 表示或者,0.d*[1-9]d* 表示小数点前面为0,小数点后面至少有一位数字,$ 表示结尾。

例如,3.14、0.5、123.456 这些都是符合要求的小数。

4. 匹配负小数:
^-([1-9]d*.d+|0.d*[1-9]d*)$
解析:与匹配小数相同,只是在整个正则表达式开头和结尾加了一个负号,表示匹配负数。

例如,-3.14、-0.5、-123.456 这些都是符合要求的负小数。

以上是一些常用的正则表达式,可以方便地匹配整数和小数。

在实际编程中,可以根据需要进行调整和扩展。

10个(含10)以内字母或字母数字的正则表达式

10个(含10)以内字母或字母数字的正则表达式

正则表达式是一种用来描述字符模式的工具,它可以帮助我们在文本中搜索、替换和匹配特定的内容。

在实际应用中,常常会遇到需要匹配特定字母或字母数字组合的情况。

本文将介绍10个以内字母或字母数字的正则表达式,帮助读者更好地理解和运用这一强大的工具。

1. 匹配单个小写字母:正则表达式:[a-z]解释:这个正则表达式可以匹配任意一个小写字母,包括a、b、c等。

2. 匹配单个大写字母:正则表达式:[A-Z]解释:这个正则表达式可以匹配任意一个大写字母,包括A、B、C等。

3. 匹配单个数字:正则表达式:[0-9]解释:这个正则表达式可以匹配任意一个数字,包括0、1、2等。

4. 匹配字母数字组合:正则表达式:[a-zA-Z0-9]解释:这个正则表达式可以匹配任意一个字母或数字,包括大小写字母和数字。

5. 匹配特定数量的字母或数字:正则表达式:[a-zA-Z0-9]{n}解释:这个正则表达式可以匹配包含n个字母或数字的字符。

6. 匹配至少一个字母或数字:正则表达式:[a-zA-Z0-9]+解释:这个正则表达式可以匹配至少一个字母或数字的字符,包括单个字母或数字、字母数字组合等。

7. 匹配不超过m个字母或数字:正则表达式:[a-zA-Z0-9]{,m}解释:这个正则表达式可以匹配不超过m个字母或数字的字符。

8. 匹配字母开头的字母数字组合:正则表达式:[a-zA-Z][a-zA-Z0-9]*解释:这个正则表达式可以匹配以字母开头的任意字母数字组合,包括单个字母、字母数字组合等。

9. 匹配以字母或数字结尾的字母数字组合:正则表达式:[a-zA-Z0-9]*[a-zA-Z0-9]解释:这个正则表达式可以匹配以字母或数字结尾的任意字母数字组合,包括单个字母、字母数字组合等。

10. 匹配不包含特定字符的字母或数字组合:正则表达式:[^特定字符]解释:这个正则表达式可以匹配不包含特定字符的任意字母或数字组合,可以根据实际需求替换"特定字符"。

正则表达式,匹配中文语句

正则表达式,匹配中文语句

正则表达式是一种用于匹配和操作文本模式的工具。

它使用特定的语法规则来定义搜索模式,以便在文本中查找符合这些规则的文本片段。

以下是一些常见的正则表达式语法和示例:
匹配单个字符:
匹配任意单个字符:.
匹配特定字符:例如,[abc] 将匹配字符a、b 或c。

匹配数字和字母:
匹配任意数字:\d
匹配任意字母或数字:\w
匹配任意字母:\p{L}
匹配重复字符或数字:
重复一次或多次:+
重复零次或多次:*
重复特定次数:例如,{3} 表示重复三次。

匹配特定模式:
匹配以特定字符开头的字符串:^abc 表示匹配以"abc" 开头的字符串。

匹配以特定字符结尾的字符串:abc$ 表示匹配以"abc" 结尾的字符串。

匹配包含特定字符的字符串:例如,[a-z]+ 表示匹配包含一个或多个小写字母的字符串。

转义特殊字符:
使用反斜杠() 来转义特殊字符,例如,\d 表示匹配实际的反斜杠字符而不是特殊含义。

下面是一些示例,演示如何使用正则表达式来匹配中文字符:
匹配单个中文字符:[\u4e00-\u9fa5]
匹配多个中文字符:[\u4e00-\u9fa5]+
匹配以中文字符开头的字符串:^[\u4e00-\u9fa5]
匹配以中文字符结尾的字符串:[\u4e00-\u9fa5]$
请注意,正则表达式的语法可能因语言和工具而异,上述示例适用于大多数常见的情况。

在使用正则表达式时,请务必参考相关文档或工具的语法规范以确保正确使用。

rules 多个正则写法

rules 多个正则写法

rules 多个正则写法
正则表达式是一种用来匹配字符串模式的工具,它可以用来搜索、替换和验证字符串。

下面是一些常见的正则表达式写法:
1. 匹配邮箱地址的正则表达式:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$。

2. 匹配手机号码的正则表达式:
^1[3-9]\d{9}$。

3. 匹配URL的正则表达式:
^(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;][-A-Za-z0-9+&@#/%=~_|]
4. 匹配身份证号码的正则表达式(简化版):
\d{17}[\dXx]
5. 匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
6. 匹配IP地址的正则表达式:
\b(?:\d{1,3}\.){3}\d{1,3}\b.
这些是一些常见的正则表达式写法,每个正则表达式都有不同的匹配规则和用途。

希望这些例子可以帮助你更好地理解正则表达式的使用。

负数正则表达式

负数正则表达式

负数正则表达式
负数正则表达式是可以用来匹配负数的一种正则表达式。

在数学中,负数是指小于零的数,例如-1、-2、-3等等。

而在计算机编程中,负数同样也是非常常见的。

因此,需要一种方法来匹配这些负数。

要编写负数正则表达式,首先需要了解正则表达式的基本语法。

正则表达式通常由特殊字符和文本字符组成。

特殊字符用于匹配特定类型的字符,例如数字、字母或符号等等。

而文本字符则用于匹配具体的文本字符串。

对于负数正则表达式,我们需要使用负号作为特殊字符来匹配负数。

具体来说,可以使用以下的正则表达式:
^-?d+(.d+)?$
这个正则表达式可以匹配包括负数在内的所有实数。

我们可以将它分解为以下几个部分:
- ^:表示字符串的开头
- -?:表示负号是可选的
- d+:表示一个或多个数字
- (.d+)?:表示小数部分,包含一个小数点和一个或多个数字
- $:表示字符串的结尾
使用这个正则表达式,我们可以匹配一些例子:
- -1.23
- -0.5
- -100
但是,需要注意的是,这个正则表达式并不能匹配负数的纯整数部分,例如-1、-2等等。

如果需要匹配这些负整数,可以使用以下正则表达式:
^-[1-9]d*$
这个正则表达式匹配以负号开头,后面跟着至少一个非零数字的整数。

例如-1、-10、-100等等。

总之,编写负数正则表达式并不太难,只需要了解正则表达式的基本语法以及负数的特点即可。

C++正则表达式示例

C++正则表达式示例

C++正则表达式⽰例⼀、正则表达式类对象 C++标准库中提供了对正则表达式的⽀持,⼀下是常⽤的使⽤⽅法: 1. regex 类: 定义包含正则表达式的对象,如regex rx("a(b?)c"); 2. cmath 类: 定义保存匹配结果的对象; 当待搜索的字符串是char类型时,使⽤此类对象; 3. smath 类: 定义保存匹配结果的对象; 当待搜索的字符串是string类型时,使⽤此类对象; 4. 常⽤正则匹配函数: 4.1 bool regex_match(...) 判断是否准确匹配整个⽬标字符串,是⽬标字符串和正则表达式要完全匹配时才返回TRUE; 如"abc"和"ab*c" 完全匹配,但是如果是"abcd"和"ab*c",虽然只有部分匹配(abc)但是返回是false; 4.2 bool regex_search(...) 在⽬标字符串中搜索⼀个匹配正则的字符串,如果搜索到了则返回true,否则返回false; 4.3 regex_replace(...) ⽤指定的字符串替换匹配到的字符串,默认是替换所有⽬标字符串中匹配到的字符串,加了format_first_only标志表⽰只替换第⼀次匹配到的字符串;⼆、使⽤⽰例1 #include <iostream>2 #include <sstream>3 #include <fstream>4 #include <string>5 #include <regex>67using namespace std;89int main(int argc, char * argv[])10 {11const char * first = "abc"; //待匹配字符串12const char * last = first + strlen(first);13 cmatch narrowMatch; //char *类型的对象来匹配保存结果14 regex rx("ab*c"); //定义包含正则表达式的对象1516// 注意:regex_match是⽬标字符串和正则表达式要完全匹配时才返回true.17// 如"abc"和"ab*c"完全匹配返回true,但是如果是"abcd"和"ab*c",虽然只有18// 部分匹配(abc)但是返回是false19// regex_match有多个重载函数,可以只有三个参数,不保存结果.20// 也可以有四个参数,第三个参数⽤来保存结果,⼀般情况下使⽤三个参数的就可以了21bool found = regex_match(22 first, //待匹配开始位置23 last, //待匹配的结束位置24 narrowMatch, // 保存结果25 rx //正则表达式26 );2728 cout << found << endl;29//cout << narrowMatch << endl; //错误3031string target2("Drizzle");32 regex rx2("(D\\w+e)");33 smatch result;34 found = regex_match(35 target2.cbegin(), //匹配开始 -->迭代器区间开始开始位置36 target2.cend(), //匹配结束 -->迭代器区间结束位置37 result, //保存结果38 rx2 //正则表达式39 );40 cout << found << endl;41//cout << result << endl; //错误42 }1 #include <iostream>2 #include <regex>3 #include <fstream>4 #include <string>5 #include <sstream>67using namespace std;89int main(void)10 {11const char * first = "abcd";12const char * last = first + strlen(first);13 cmatch mr; //保存匹配结果,可打印14 regex rx("abc");15 std::regex_constants::match_flag_type fl = std::regex_constants::match_default; //匹配标志1617// 给定⽬标字符串的起始和结束位置18// 完全和正则表达式匹配,不同于regex_match()19// 可打印正确匹配的结果,不同于regex_match()20bool search1 = regex_search(first, first+1, rx, fl);21 cout << "search1: " << search1 << endl;2223bool search2 = regex_search(first, last, mr, rx);24 cout << "search2: " << search2 << "; mr: " << mr.str() << endl;2526// 给定待匹配的字符串(char类或string类)27bool search3 = regex_search("a", //待匹配字符串28 rx);29 cout << "search3: " << search3 << endl;3031bool search4 = regex_search("xabcd", mr, rx);32 cout << "search4: " << search4 << "; mr: " << mr.str() << endl;3334bool search5 = regex_search(string("a"), //待匹配对象,string类35 rx);36 cout << "search5: " << search5 << endl;3738string st("abcabc");39 smatch mr2; //保存匹配结果,可打印40bool search6 = regex_search(st, mr2, rx);41 cout << "search6: " << search6 << "; mr2: " << mr2.str() << endl;4243return0;44 }1 #include <iostream>2 #include <sstream>3 #include <string>4 #include <regex>56using namespace std;78int main(void)9 {10char buf[20];11const char * first = "axayaz";12const char * last = first + strlen(first);1314 regex rx("a");15string fmt("A");16 regex_constants::match_flag_type fonly = regex_constants::format_first_only;1718// 默认是替换所有⽬标字符串总匹配到的字符串19// format_first_only标志表⽰只替换第⼀次匹配到的字符串20// 输出替换后的字符串21 *regex_replace(22 &buf[0], //被更改字符串的迭代器23 first,24 last,25 rx,26 fmt //要替换的字符串27 ) = '\0';28 cout << "replacement1: " << &buf[0] << endl;2930 *regex_replace(31 &buf[0],32 first,33 last,34 rx,35 fmt,36 fonly //替换标志,在此表⽰只替换第⼀次匹配到的字符串37 ) = '\0';38 cout << "replacement2: " << &buf[0] << endl;3940string str("adaeaf");41string replacement3 = regex_replace(42 str,43 rx,44 fmt45 );46 cout << "replacement3: " << replacement3 << endl;4748string replacement4 = regex_replace(49 str,50 rx,51 fmt,52 fonly53 );54 cout << "replacement4: " << replacement4 << endl;5556return0;57 }1 #include <iostream>2 #include <regex>3 #include <fstream>4 #include <string>5 #include <sstream>67using namespace std;89int main(void)10 {11const char * first = "abcd";12const char * last = first + strlen(first);13 cmatch mr; //保存匹配结果,可打印14 regex rx("abc");15 std::regex_constants::match_flag_type fl = std::regex_constants::match_default; //匹配标志1617// 给定⽬标字符串的起始和结束位置18// 完全和正则表达式匹配,不与待搜索字符串同长度,不同于regex_match()19// 可打印正确匹配的结果,不同于regex_match()20bool search1 = regex_search(first, first+1, rx, fl);21 cout << "search1: " << search1 << endl;2223bool search2 = regex_search(first, last, mr, rx);24 cout << "search2: " << search2 << "; mr: " << mr.str() << endl;2526// 给定待匹配的字符串(char类或string类)27bool search3 = regex_search("a", //待匹配字符串28 rx);29 cout << "search3: " << search3 << endl;3031bool search4 = regex_search("xabcd", mr, rx);32 cout << "search4: " << search4 << "; mr: " << mr.str() << endl;3334bool search5 = regex_search(string("a"), //待匹配对象,string类35 rx);36 cout << "search5: " << search5 << endl;3738string st("abcabc");39 smatch mr2; //保存匹配结果,可打印40bool search6 = regex_search(st, mr2, rx);41 cout << "search6: " << search6 << "; mr2: " << mr2.str() << endl;4243///////////////////////////////4.regex_search(...)循环遍历字符串⽰例/////////////////////////44/// --------->找到⽬标字符串中所有匹配的⼦串45/// ####----->此⽰例中找到s串中所有以subj开头的单词,并打印出来46///////////////////////////////////////////////////////////////////////////////////////////47string s("this subject has a subjmarine as a subjsequence subjmite");48 smatch m;49 regex e("\\b(subj)([^ ]*)/");50while (regex_search(s, m, e))51 {52 cout << m.str() << endl;53 s = m.suffix().str();54 }5556return0;57 }三、特殊字符及语法表达式正则表达式(regular expression)就是⽤⼀个“字符串”来描述⼀个特征,然后去验证另⼀个“字符串”是否符合这个特征。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现

这些目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础工具,可以用于很多类型的文本处理,如匹配,搜索,提取

和分析结构化内容.java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher.Pattern是一个正则表达式经编译后的表现模式。在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特

定的String那样简单,也可以很复杂,需要采用分组和字符类,如空白,数字,字母或控制符.因为Java字符串基于统一字符编码(Unicode),正则表达式也

适用于国际化的应用程序.Pattern类的方法简述方法说明staticPetterncompile(Stringregex,intflag)编译模式,参数regex表示输入的正则表达式,flag表示模式类型(Pattern.CASE_INSENSITIVE表示

不区分大小写)Matchermatch(CharSequenceinput)获取匹配器,input时输入的待处理的字符串staticbooleanmatches(Stringregex,CharSequenceinput)快速的匹配调用,直接根据输入的模式regex匹配inputString[]split(CharSequenceinput,intlimit)分隔字符串input,limit参数可以限制分隔的次数

Matcher一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与

PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。

Matcher类的方法简述方法说明booleanmatches()对整个输入字符串进行模式匹配.booleanlookingAt()从输入字符串的开始处进行模式匹配booleanfind(intstart)从start处开始匹配模式intgroupCount()返回匹配后的分组数目StringreplaceAll(Stringreplacement)用给定的replacement全部替代匹配的部分StringrepalceFirst(Stringreplacement)用给定的replacement替代第一次匹配的部分MatcherappendReplacement(StringBuffersb,Stringreplacement)根据模式用replacement替换相应内容,并将匹配的结果添加到sb当前位置之后StringBufferappendTail(StringBuffersb)将输入序列中匹配之后的末尾字串添加到sb当前位置之后.

正则表达式中常见通配符:对于单字符串比较而言,使用正则表达式没有什么优势.Regex的真正强大之处在于体现在包括字符类和量词(*,+,?)的更复杂的模式上.字符类包括:\d数字\D非数字\w单字字符(0-9,A-Z,a-z)\W非单字字符\s空白(空格符,换行符,回车符,制表符)\S非空白[]由方括号内的一个字符列表创建的自定义字符类匹配任何单个字符下面的字符将用于控制将一个子模式应用到匹配次数的过程.?重复前面的子模式0次到一次*重复前面的子模式0次或多次+重复前面的子模式一次到多次

匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}匹配空行的正则表达式:\n[\s|]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)

以下是实例部分:实例一:正则式是最简单的能准确匹配一个给定String的模式,模式与要匹配的文本是等价的.静态的Pattern.matches方法用于比较一个String是否匹配一个给定模式.例程如下:Stringdata="java";booleanresult=Pattern.matches("java",data);输出:true实例二:String[]dataArr={"moon","mon","moon","mono"};

StringpatternStr="m(o+)n";booleanresult=false;for(Stringstr:dataArr){result=Pattern.matches(patternStr,str);if(result){System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");}else{System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");}}

输出:字符串moon匹配模式m(o+)n成功字符串mon匹配模式m(o+)n成功字符串moon匹配模式m(o+)n成功字符串mono匹配模式m(o+)n失败

模式是”m(o+)n”,它表示mn中间的o可以重复一次或多次,因此moon,mon,mooon能匹配成功,而mono在n后多了一个o,和模式匹配不上.

注:+表示一次或多次;?表示0次或一次;*表示0次或多次.实例三:String[]dataArr={"ban","ben","bin","bon","bun","byn","baen"};

StringpatternStr="b[aeiou]n";booleanresult=false;for(Stringstr:dataArr){result=Pattern.matches(patternStr,str);if(result){System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");}else{System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");}}

输出:字符串ban匹配模式b[aeiou]n成功字符串ben匹配模式b[aeiou]n成功字符串bin匹配模式b[aeiou]n成功字符串bon匹配模式b[aeiou]n成功字符串bun匹配模式b[aeiou]n成功字符串byn匹配模式b[aeiou]n失败字符串baen匹配模式b[aeiou]n失败

注:方括号中只允许的单个字符,模式“b[aeiou]n”指定,只有以b开头,n结尾,中间是a,e,i,o,u中任意一个的才能匹配上,所以数组的前五个可以匹配,后两个元素无法匹配。方括号[]表示只有其中指定的字符才能匹配.

实例四:String[]dataArr={"been","bean","boon","buin","bynn"};

StringpatternStr="b(ee|ea|oo)n";for(Stringstr:dataArr){booleanresult=Pattern.matches(patternStr,str);if(result){System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");}else{System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");}}

输出:字符串been匹配模式b(ee|ea|oo)n成功字符串bean匹配模式b(ee|ea|oo)n成功字符串boon匹配模式b(ee|ea|oo)n成功字符串buin匹配模式b(ee|ea|oo)n失败字符串bynn匹配模式b(ee|ea|oo)n失败如果需要匹配多个字符,那么[]就不能用上了,这里我们可以用()加上|来代替,()表示一组,|表示或的关系,模式b(ee|ea|oo)n就能匹配been,bean,boon等,因此前三个能匹配上,而后两个不能.

实例五:String[]dataArr={"1","10","101","1010","100+","100d"};

StringpatternStr="\\d+";for(Stringstr:dataArr){booleanresult=Pattern.matches(patternStr,str);if(result){System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");}else{System.out.println("字符串"+str+"匹配模式"+patternStr+"失败");}}

输出:字符串1匹配模式\d+成功字符串10匹配模式\d+成功字符串101匹配模式\d+成功字符串1010匹配模式\d+成功字符串100+匹配模式\d+失败字符串100d匹配模式\d+失败

注:d表示字母d,\d表示的是数字,不是字母d,前一个'\'是转义字符,用来转义第二个'\'。'\d+'表示一个或一个以上数字,所以"\\d+"就表示一位或多位数字,因此前四个能匹配上,最后一个因为+号是非数字字符而匹配不上.

实例六:String[]dataArr={"a100","b20","c30","df10000","gh0t"};

StringpatternStr="\\w+\\d+";for(Stringstr:dataArr){booleanresult=Pattern.matches(patternStr,str);if(result){System.out.println("字符串"+str+"匹配模式"+patternStr+"成功");}else{System.out.println("字符串"+str+"匹配模式

相关文档
最新文档