(三)java正则--java正则表达式
记⼀些知识。。。。
以下摘⾃w3school..
"(.)\\1+" 括号中的点表⽰任意字符,后⾯的\\1表⽰取第⼀个括号匹配的内容,后⾯的加号表⽰匹配1次或1次以上。⼆者加在⼀起就是某个字符重复两次或两次以上
符号定义
基本书写符号
符号符号⽰例解释匹配输⼊
\ 转义符\* 符号“*”*
[ ] 可接收的字符列表[efgh]e、f、g、h中的任意1个字符e、f、g、h
[^] 不接收的字符列表[^abc]除a、b、c之外的任意1个字符,包括数字和特殊符号m、q、5、*
|匹配“|”之前或之后的表达式ab|cd ab或者cd ab、cd
( ) 将⼦表达式分组(abc)将字符串abc作为⼀组abc
- 连字符A-Z任意单个⼤写字母⼤写字母
限定符
限定符将可选数量的数据添加到正则表达式,下表为常⽤限定符:
符号含义⽰例⽰例匹配输⼊
* 指定字符重复0次或n次(abc)*仅包含任意个abc的字符串,等效于\w*abc、abcabcabc
+ 指定字符重复1次或n次m+(abc)* 以⾄少1个m开头,后接任意个abc的字符串m、mabc、mabcabc 指定字符重复0次或1次m+abc?以⾄少1个m开头,后接ab或abc的字符串mab、mabc、mmmab、mmabc {n}只能输⼊n个字符[abcd]{3}由abcd中字母组成的任意长度为3的字符串abc、dbc、adc
{n,}指定⾄少 n 个匹配[abcd]{3,}由abcd中字母组成的任意长度不⼩于3的字符串aab、dbc、aaabdc
{n,m}指定⾄少 n 个但不多于 m 个匹配[abcd]{3,5}由abcd中字母组成的任意长度不⼩于3,不⼤于5的字符串abc、abcd、aaaaa、bcdab
^指定起始字符^[0-9]+[a-z]*以⾄少1个数字开头,后接任意个⼩写字母的字符串123、6aa、555edf
$指定结束字符^[0-9]\-[a-z]+$以1个数字开头后接连字符“–”,并以⾄少1个⼩写字母结尾的字符串2-a、3-ddd、5-efg
匹配字符集
匹配字符集是预定义的⽤于正则表达式中的符号集。如果字符串与字符集中的任何⼀个字符相匹配,它就会到这个匹配项。
正则表达式中的部分匹配字符集:
符号含义⽰例⽰例匹配输⼊
. 匹配除 \n 以外的任何字符 a..b以a开头,b结尾,中间包括2个任意字符的长度为4的字符串aaab、aefb、a35b、a#*b \d 匹配单个数字字符,相当于[0-9]\d{3}(\d)?包含3个或4个数字的字符串123、9876
\D 匹配单个⾮数字字符,相当于[^0-9]\D(\d)*以单个⾮数字字符开头,后接任意个数字字符串a、A342
\w匹配单个数字、⼤⼩写字母字符,相当于[0-9a-zA-Z]\d{3}\w{4}以3个数字字符开头的长度为7的数字字母字符串234abcd、12345Pe
\W匹配单个⾮数字、⼤⼩写字母字符,相当于[^0-9a-zA-Z]\W+\d{2}以⾄少1个⾮数字字母字符开头,2个数字字符结尾的字符串#29、#?@10
分组构造
常⽤分组构造形式:
常⽤分组构造形
说明
式
()⾮命名捕获。捕获匹配的⼦字符串(或⾮捕获组)。编号为零的第⼀个捕获是由整个正则表达式模式匹配的⽂本,其它捕获结果则根据左括号的顺序从1开始⾃动编号。
(?<name>)命名捕获。将匹配的⼦字符串捕获到⼀个组名称或编号名称中。⽤于name的字符串不能包含任何标点符号,并且不能以数字开头。可以使⽤单引号替代尖括号,例如(?'name')
字符转义
常⽤正则表达式举例
⾮负整数:“^\d+$ ”
正整数: “ ^[0-9]*[1-9][0-9]*$”
⾮正整数: “ ^((-\d+)|(0+))$”
整数: “ ^-?\d+$”
英⽂字符串: “ ^[A-Za-z]+$”
英⽂字符数字串: “ ^[A-Za-z0-9]+$”
英数字加下划线串: “^\w+$”
E-mail地址:“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”
URL:“^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$”
匹配特定数字
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配⾮负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配⾮正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配⾮负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配⾮正浮点数(负浮点数 + 0)
匹配特定字符串
^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串
^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串
^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串
^w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串
Java这些常⽤的正则表达式在处理⼤数据查,更新,替换的时候可以极⼤的提⾼效率
正则表达式匹配简单语法汇总
1、字母:匹配单个字母
A:表⽰匹配字母A;
正则表达式任意内容\\:匹配转义字符“\”;
\t:匹配转义字符“\t”;
\n:匹配转义字符“\n”;
2、⼀组字符:任意匹配⾥⾯的⼀个单个字符
[abc]:表⽰可能是字母a,可能是字母b或者是字母c;
[^abc]:表⽰不是字母a,字母b,字母c的任意⼀个;
[a-zA-Z]:表⽰全部字母中的任意⼀个;
[0-9]:表⽰全部数字的任意⼀个;
3、边界匹配
^:表⽰⼀组正则的开始;
$:表⽰⼀组正则的结束;
4、简写表达式:每⼀位出现的简写标记也只表⽰⼀位
· :表⽰任意的⼀位字符;
\d :表⽰任意的⼀位数字,等价于“[0-9]”;
\D :表⽰任意的⼀位⾮数字,等价于“[~0-9]”;
\w :表⽰任意的⼀位字母、数字、_,等价于“[a-zA-Z0-9_]”;
\w :表⽰任意的⼀位⾮字母、数字、_,等价于“[^a-zA-Z0-9_]”;
\s :表⽰任意的⼀位空格,例如:\n、\t等;
\S :表⽰任意的⼀位⾮空格;
5、数量表⽰:之前所有的正则都只是表⽰⼀位,如果要表⽰多位,则就需要数量表⽰。:此正则出现0次或1次;
*:此正则出现0次、1次或多次;
+:次正则出现1次或多次;
{n}:此正则出现正好n次;
{n,}:此正则出现n次以上;
{n,m}:此正则出现n – m次。
6、逻辑表⽰:与、或、⾮
正则表达式A正则表达式B:表达式A之后紧跟着表达式B;
正则表达式|A正则表达式B:表⽰表达式A或者表达式B,⼆者任选⼀个出现;
(正则表达式):将多个⼦表达式合成⼀个表⽰,作为⼀组出现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论