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} |
小定字母a-z |
p{Upper} |
大写字母A-Z |
p{ASCII} |
ASCII字符 |
p{Alpha} |
字母字符 |
p{Digit} |
十进制数字,0-9 |
p{Alnum} |
数字或字母字符 |
p{Punct} |
标点符号:!“#%&()*=- |
p{Graph} |
可见字符:[p{Alnum}p{Punct}] |
p{Print} |
可打印字符[p{Graph}x20] |
p{Blank} |
空格或制表符:[t] |
p{Cntrl} |
控制字符:[x00-x1Fx7F] |
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次 |
6.样例
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException;
public class Regular { //字符串是否是数字 staticString regexIsDigital =“d+”;//字符串是否是字母 regexIsAlpha =”p{Alpha}+”;//字符串是否是15位或18位的身体证号码 regexIsID{15}|18}”;//字符串是否是JJJ开头KKK结尾 regexIsJJJStartKKKEnd=”^JJJ.*KKK$”;//字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字 regexIsTelePhoneNumber =”[0-9]{3,4}-?[]+”;//X@X.com.cn regexIsEmail w+@+(.2})*.//字符串是否是汉字 regexIsHanZi=”[u4e00-u9fa51//查找以Java开头,任意结尾的字符串 regexIsStartJava “^Java.*”;//以多条件分割字符串时 regexSplit =”[,|]+”;
void main(String[] args) testIsDigit(); testIsAlpha testIsID testStartEnd testIsTelePhoneNum testEmailAddre testIsHanZi testIsStartJava testSplit testReplace testPattern }
private testPattern() Pattern pattern Pattern.compile("");System.outprintln(patternmatches"[0-9]{6}" "200038")); "d{6}" testReplace"正则表达式"Matcher matcher patternmatcher"正则表达式 Hello World,正则表达式 Hello World" //替换第一个符合正则的数据replaceFirst"Java" pattern matcher //替换所有符合正则的数据 replaceAll testSplitregexSplit data "Java Hello World Java,Hello,World|Sun";data+" split by:" strs split for(int i=i<strslength++) []); testIsStartJava pressInfoByPattern"Java不是人"regexIsStartJava pressInfoByPattern"dJava不是人" testIsHanZi pressInfo"验证汉字"regexIsHanZi testIsTelePhoneNum"0733-5544"regexIsTelePhoneNumber"073-566544""073566544""073--566544" testStartEnd"JJJKKK"regexIsJJJStartKKKEnd"JJJaaaaKKK" pressInfo"JJaaaaKKK""JJJaaaaKK" testIsID pressInfo"222222222222222"regexIsID"22222222221111" pressInfo"222222222211122221""22222222221112222" testIsAlpha"da"regexIsAlpha"d1a" testIsDigit pressInfo"21452"regexIsDigital"21a452""021452" testEmailAddre pressInfo"aaa@"regexIsEmail"aaaaaaaa""22222@22222fffyu.dfg.com" pressInfo data regex ifregex)){":is match regex:"}else":is not match regex:" pressInfoByPattern ()){} (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|
|