正则表达式--只求能看懂别人写的正则表达式是什么意思
正则表达式在日常开发应用中还是经常用到的,下面把学习笔记简单的记录下。
元字符
字符 | 描述 |
---|---|
\ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,‘n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序列 ‘\’ 匹配 “” 而 “(” 则匹配 “(”。 |
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。 |
+ | 匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。 |
? | 匹配前面的子表达式零次或一次。例如,“do(es)?” 可以匹配 “do” 或 “does” 。? 等价于 {0,1}。 |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o |
{n,} | n 是一个非负整数。至少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于 ‘o+’。‘o{0,}’ 则等价于 ‘o*’。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,“o{1,3}” 将匹配 “fooooood” 中的前三个 o。‘o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。 |
x | y | 匹配 x 或 y。例如,‘z |food’ 能匹配 “z” 或 “food”。’(z |f)ood’ 则匹配 “zood” 或 “food”。 |
[abc] | 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。 |
不常见的元字符
运算符优先级
正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。
相同优先级的从左到右进行运算,不同优先级的运算先高后低。下图从最高到最低说明了各种正则表达式运算符的优先级顺序:
实例:
^[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-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$ //匹配邮箱[1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3} //匹配IP地址
正则表达式--只求能看懂别人写的正则表达式是什么意思相关推荐
- 怎么看懂别人写的单片机项目代码?
记得刚开始接触代码的时候,总觉得很神秘,也好奇到底是怎样的牛人,才能把这么多复杂的"天书"写出来去. 当时多希望自己一夜之间也拥有这种能力,能自己写代码去把自己的想法通过技术的手段 ...
- 看懂别人的代码,和自己能写代码是两回事
看懂别人的代码,和自己能写代码是两回事--在理解了别人代码中功能后,自己还是要多动手实现 -- 往往这个时候才能有更大的收获. 转载于:https://www.cnblogs.com/lazyboy1 ...
- 如何快速看懂别人的代码
我们在写程式时,有不少时间都是在看别人的代码. 例如看小组的代码,看小组整合的守则,若一开始没规划怎么看, 就会"噜看噜苦(台语) " 不管是参考也好,从开源抓下来研究也好,为 ...
- c语言如何快速看懂别人的程序,探究如何快速看懂单片机程序方法
在现实中,我相信有很多刚刚接触单片机的同学,简直是无从下手,打开一个程序,更会被复杂的结构和密密麻麻的代码吓到,产生退缩的想法,这篇文章带你了解一下单片机程序. 我对单片机的总结:"单片机其 ...
- 看懂别人的代码,只是成为高效程序员的第一步!
作者 | SeattleDataGuy 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在为面试做准备的时候,很多软件工程师都花费了大量时间做编程题和完善简历. 最终在找 ...
- stream流常用方法_Java8 中用法优雅的 Stream,怪不得我之前总是看不懂别人写的代码!...
Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 放大招,流如何简化代码 如果有一个需求,需要对数据库 ...
- 希望今年能看懂和写出这样的Swift代码
macOS 终端程序下载 func anyCommonElements<T: Sequence, U: Sequence>(_ lhs: T, _ rhs: U) -> Boolwh ...
- 写html前端代码的软件_你能看懂高贵的前端程序员的工作内容?
高贵的前端程序猿们: 如何在前端开发这种高精尖的技术领域找到心仪的工作?实现在咖啡馆喝喝咖啡敲敲代码就能升职加薪.买房买车.迎娶白富美走上人生巅峰的职业梦想?这篇<进化论:从0到100,前端猿茁 ...
- 03-能看懂代码,就是自己写不出来,怎么办?
怕什么真理无穷 进一步有近一步的欢喜 先抛一个观点 知其然,要知其所以然 这个说起来容易,做起来难. 写不出来代码的时候,不要害怕,不要怀疑自己的能力.首先要从内心告诉自己,你可以的,你可以的,你可以 ...
最新文章
- Novas Verdi、Debussy ,Synopsys VCS,Candence NC-Verilog,Mentor Graphics工具介绍
- 12.集合:在我的世界里,你就是唯一 / 不可变集合
- 2019-05-15 Java学习日记 day5
- concurrently同时开启多个监听服务
- python-mysql超简单银行转账
- python删除链表重复节点_LeetCode-python 82.删除排序链表中的重复元素 II
- Git钩子:自定义你的工作流
- 计算机图形学_GAMES101-现代计算机图形学课程 全笔记
- (转)OPEC神秘的“朋友圈”:全球最大原油对冲基金掌门人安杜兰
- 让你了解CEO、COO、CFO、CTO是什么意思
- 【综述】(MIT博士)林达华老师-quot;概率模型与计算机视觉”
- 不用编写程序代码,送你一个爬虫程序批量采集猫眼电影票房数据
- fast路由器服务器未响应,迅捷(FAST)无线路由器设置好了上不了网的解决方法
- 微信报修小程序源码(近期维护V3.1.0)
- GPU计算能力(Compute Capability)那些事儿
- 【报告分享】 2020年汽车产销数据及汽车工业运行情况-中国汽车工业协会(附下载)
- 【Flume】Flume入门
- java中一个简单的涂鸦程序
- 2021-2027全球与中国牛肉罐头市场现状及未来发展趋势
- 第十二周 任务四
热门文章
- How to exploit MySQL index optimizations
- Ajax并不是一种技术(Ajax入门好文章)
- Spring|Spring概述
- 学习HM微博项目第2天
- Mac电脑键盘(ujmiko)不能使用问题记录
- 在内卷如此严重的当下,大二小伙逆流而上,首次参加校招成功拿到网易实习offer
- RabbitMQ 从入门到精通 消息应答 持久化 交换机 队列 发布确认 集群 等
- 计算机专业是武大冷门吗,武汉大学最不好的专业是什么?附武汉大学的弱势专业名单...
- 将改写NVMe历史的HMB技术解读
- 分享|2020年义务教育入学信息采集今日开始!手把手教您如何快速操作|方格教育