前阵子在总结自己的正则笔记,现在就拿出去给大家分享,都是从视频自己打下来或者参考别人的帖子然后自己写下来的,适合正则入门,高深的这里还没总结到。
正则:字符匹配(文本处理语言); 匹配规则: 1、优先选择最左端的匹配结果 2、标准的匹配量词*、+、?和{m,n}是匹配优先的;
括号: 尖括号<>;
小括号():对字符进行分组->子表达式;并保存匹配的文本;
中括号[]:自定义能够匹配 '多种字符' 的表达式(匹配的对象);
大括号{}:修饰匹配次数的符号;
各个字符的含义: [^]:代表取反; ^[]:代表一行的开头 匹配字符串的开始; $:代表以什么结尾 匹配字符串的结束; .:代表任意一个字符; d:代表任意一个数字; s:space代表空白字符 包含[ tnfr]; w:word代表一个字符[a-zA-Z_0-9]匹配字母或数字或下划线或汉字; b:单词边界,匹配单词的开始或结束,功能类似$,hello world o w这样就是单词边界; t:制表符,Tab; v:竖向制表符; f:换页符; e:Escape; nn: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前面的位置 比如bw+(?=ingb),匹配以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次,否则都不匹配; [d{3}]这样里面的{3}不起作用,会被当做匹配对象分解成3部分来匹配这3部分中的任意一个都行{ 3 }; ps:([.+^>]+)这样^会不起作用,因为.+已经包含了>;
随手操作个例子:
href正则:<a(?:.+)href=['"]*([^>"]+)['"]*>(.+)</a>
如以上内容有错欢迎指正 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|