加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:10:01 所属栏目:百科 来源:网络整理
导读:1.正则表达式 正则表达式,又称正规表示法、常规表示法(Regular Expression,常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串 2.元字符: 元字符 正则表达式的写法 意义 . “.” 任意一个字符 ^ “^Spri

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
()){}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!