正则总结

       前阵子在总结自己的正则笔记,现在就拿出去给大家分享,都是从视频自己打下来或者参考别人的帖子然后自己写下来的,适合正则入门,高深的这里还没总结到。

正则:字符匹配(文本处理语言);
匹配规则:
1、优先选择最左端的匹配结果
2、标准的匹配量词*、+、?和{m,n}是匹配优先的;

括号:
尖括号<>;

小括号():对字符进行分组->子表达式;并保存匹配的文本;

中括号[]:自定义能够匹配 '多种字符' 的表达式(匹配的对象);

大括号{}:修饰匹配次数的符号;

各个字符的含义:
[^]:代表取反;
^[]:代表一行的开头 匹配字符串的开始;
$:代表以什么结尾 匹配字符串的结束;
.:代表任意一个字符;
\d:代表任意一个数字;
\s:space代表空白字符 包含[ \t\n\f\r];
\w:word代表一个字符[a-zA-Z_0-9]匹配字母或数字或下划线或汉字;
\b:单词边界,匹配单词的开始或结束,功能类似$,hello world o w这样就是单词边界;
\t:制表符,Tab;
\v:竖向制表符;
\f:换页符;
\e:Escape;
\0nn:ASCII代码中八进制代码为nn的字符;
\xnn:ASCII代码中十六进制代码为nn的字符;
\unnnn:Unicode代码中十六进制代码为nnnn的字符;
\c:NASCII控制字符。比如\cC代表Ctrl+C;
\A:字符串开头(类似^,但不受处理多行选项的影响);
\Z:字符串结尾或行尾(不受处理多行选项的影响);
\z:字符串结尾(类似$,但不受处理多行选项的影响);
\G:当前搜索的开头;
\W:匹配任意不是字母,数字,下划线,汉字的字符;
\S:匹配任意不是空白符的字符;
\D:匹配任意非数字的字符;
\B:匹配不是单词开头或结束的位置;
\m:匹配多行;
\s:匹配单行;
\i:忽略大小写(ignore);
\g:全局匹配(global);
\<:单词的起始位置;
\>:单词的结束位置;
[^x]:匹配除了x以外的任意字符;
[^aeiou]:匹配除了aeiou这几个字母以外的任意字符;

符号的含义:

*代表0个或多个;
+代表1个或多个;
?代表1个或者0个;

懒惰模式:

*?重复任意次,但尽可能少重复;
+?重复1次或更多次,但尽可能少重复;
??重复0次或1次,但尽可能少重复;
{n,m}?重复n到m次,但尽可能少重复;
{n,}?重复n次以上,但尽可能少重复;
{}代表范围  量词个数;
{n}正好出现n次;
{n,}最少出现n次,最多不知道了;
{n,m}最少n次,不超过m次;
“[abc]”表示去abc其中的一个;
”[]|[]“两个之间的其中一个;
(?<Word>\w+)(或者把尖括号换成'也行:(?'Word'\w+)),这样就把\w+的组名指定为Word了;
(exp)匹配exp,并捕获文本到自动命名的组里;
(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp);
(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号;
(?=exp)匹配exp前面的位置 比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分);
(?<=exp)匹配exp后面的位置;
(?!exp)匹配后面跟的不是exp的位置;
(?<!exp)匹配前面不是exp的位置;
(?#comment)这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读;

修饰模式:
(?i)不区分大小写的匹配模式;
(?s)宽松排列和注释模式;
(?x)点号通配模式;
(?m)增强的行锚点模式;

ps:Pattern p=Pattern.compile(“[a-z]{3}”)a-z必须要连续重复匹配三次  {1,3}表示重复的次数不能少于1次,不能多于3次,否则都不匹配;
ps:[\d{3}]这样里面的{3}不起作用,会被当做匹配对象分解成3部分来匹配这3部分中的任意一个都行{ 3 };
ps:([.+^>]+)这样^会不起作用,因为.+已经包含了>;

随手操作个例子:

href正则:<a(?:.+)href=['"]*([^>"]+)['"]*>(.+)</a>

                                                                                        如以上内容有错欢迎指正


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值