吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1835|回复: 2
收起左侧

[其他转载] 正则表达式(一)

[复制链接]
yuqiaobin 发表于 2020-2-25 16:26
模糊匹配一、使用量词使用量词。譬如{m,n},表示连续出现最少m次,最多n次比如/ab{2,5}c/表示匹配这样一个字符串:第一个字符是“a”,接下来是2到5个字符“b”,最后是字符“c”/ab{2,5}c/g,后面多了g,它是正则的一个修饰符。表示全局匹配1.简写{m,} 表示至少出现m次。
{m} 等价于{m,m}表示出现m次。
? 等价于{0,1}表示出现或者不出现。
+ 等价于{1,}表示出现至少一次。追加嘛,至少要一次才能追* 等价于{0,}表示出现任意次,有可能不出现。通配符)二、使用字符组。譬如[abc],表示该字符是可以字符“a”、“b”、“c”中的任何一个  /a[123]b/可以匹配如下三种字符串:"a1b"、"a2b"、"a3b"1. 使用范围广利用连接符‘-’,如[0-9a-z]表示既可以是数字也可以是小写字母2. 排除字符组你会不想要一些字符,你可以使用^表示脱去例如[^abc],表示是一个除"a"、"b"、"c"之外的任意一个字符3.常用的简写形式\d就是[0-9]。表示是一位数字\D就是[^0-9]。表示除数字外的任意字符。\w就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。记忆方式:w是word的简        写,也称单词字符\W是[^0-9a-zA-Z_] 非单词字符。\s是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车        符、换页符。\S是[^ \t\v\n\r\f]。 非空白符。.就是[^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔        符和段分隔符除外。注意大小写哦!!!三.贪婪匹配和惰性匹配正则/\d{2,5}/,表示数字连续出现2到5次。会匹配2位、3位、4位、5位连续数字那如果我只要2次,也就是满足匹配的下限,这就叫惰性匹配,如果要5次,也就是满足匹配的上限,这就叫贪婪匹配。怎么实现惰性匹配呢?方法就是在你的量词后面加个问号。例如        {m,n}? {m,}? ?? +? *?四.分支具体形式如下:(p1|p2|p3),其中p1p2p3是子模式,用|(管道符)分隔,表示其中任何之一意思大概就和”或“差不多。/good|goodbye/该正则表达式如果来识别goodbye这个单词,它匹配到是good,因为 | 符号是惰性的,如果匹配到第一个字符满足需求就会停止匹配(这好像和C语言的或有差不多的操作)五.具体用处(五个例子,很有用!!!)1. 写网页的时候,想要把你源码所有的颜色get出来,就可以使用正则表                达式var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
        var string = "#ffbbad #Fc01DF #FFF #ffE";
        console.log( string.match(regex) );
        输出的结果是 ["#ffbbad", "#Fc01DF", "#FFF", "#ffE"]2. 匹配时间的时候,比如22:33var regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/;
        console.log( regex.test("23:59") );
        console.log( regex.test("02:07") );
        输出 true true看到这里,你会觉得奇怪,^不是表示否定的吗???而这里的意思好像不是否定,没错,官方的文档是这样说的
[^ ]
否定的字符种类。匹配除了方括号里的任意字符
^
从开始行开始匹配.
$
从末端开始匹配.
明白差别了吗,^使用在字符组[]中才表示否定3. 匹配日期的时候,比如2020-02-25这个也不难啦,注意分类讨论/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/4. 文件夹正则表达式 文件夹正则表达式.png var regex = /^[a-zA-Z]:\\([^\\:*<>|"?\r\n/]+\\)*([^\\:*<>|"?\r\n/]+)?$/;
console.log( regex.test("F:\\study\\javascript\\regex\\") );
console.log( regex.test("F:\\study\\javascript") );
console.log( regex.test("F:\\") );
输出结果: true true true5. id正则表达式目的:<div id="container" class="main"></div>提取出id="container"如果你用/id=.*/(无限重复通配符)这下会把直到最后一个双引号的内容全部囊括,出事。。。。所以,惰性匹配,/id=.*?/惰性匹配只会获取一个题外话:我之前写python爬虫玩的时候一直记得是“点星问”,却不知道其中的原理,现在终于懂了hhh 剩下的明天补充

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lynxtang 发表于 2020-2-25 17:07
妈耶。。。麻烦重新排版下吧,你这复制粘贴得完全没有可读性啊
小平平qq 发表于 2020-2-25 17:55
 楼主| yuqiaobin 发表于 2020-2-25 20:28
lynxtang 发表于 2020-2-25 17:07
妈耶。。。麻烦重新排版下吧,你这复制粘贴得完全没有可读性啊

https://www.52pojie.cn/thread-1115772-1-1.html
重新发了下,不好意思啊老铁
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 00:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表