问题

假设我开了一个创业公司,现在邀请一批老伙伴加入公司,一起吃饼。这时候我收到了这些回复:

  1. ok, i will do it
  2. okie dokie
  3. Ahooy, Okay!!!
  4. why sure, i can go
  5. arrr, yes matey
  6. My answer me mate, is yes y

现在我要找到回复中肯定的词语。比如

  1. ok
  2. Okay
  3. sure
  4. yes
  5. y

应该怎么做呢?

单词边界

从最简单的开始,先匹配ok。

/ok/

结果第二行的okie也被匹配了,这是什么鬼,我们不应该匹配第2行。还记得《正则表达式2》里面讲的部分匹配的问题,但是这里不能用那个解决方案,因为ok后面还有很多东西呢。所以这里介绍一个边界元字符(Boundary metacharacter)\b

这样写就可以正确匹配ok单词了

/\bok\b/

\b确保匹配整个单词

匹配多个和“可以选择的”

现在ok匹配上了,我们需要匹配Okay了。直接把Okay放在后面可以的。

/\bok\b|\bokay\b/

这样可以的。但是如果有更多的可能性呢,这样就不好了,我们换一种吧。如果能让ay是可选的,就可以简化了吧。这里介绍?.看看下面代码

/\bok(ay)?\b/i

这样就可以匹配ok和okay了,?表示出现0次或者1次,就是可以选择的意思

Or破坏了单词边界

下面我们来看看如何匹配sure,很显然可以想到。

/\bok(ay)?|sure\b/i

这个可以匹配sure,可是也可以匹配ensure,因为左边没有\b了。解决的方法是用group

/\b(ok(ay)?|sure)\b/i

结局

剩下的yes和y应该很好解决了,看一下代码吧

/\b(ok(ay)?|sure|y(es)?)\b/i

奖励

正则表达式太牛逼了,忍不住我再学习点。

如何表达非

前面我们都是去匹配,那么我们不想匹配一些东西怎么办,比如,要匹配所有不是数字的?看看这个:

/[a-z\s,]+/i

这样写不错,但是还可以这样

/[^\d]+/i

等等,^不是表示一行以模式开头吗?嗯,在[]中它表示否定。不要混淆了。/^[^\d]+$/看这个里面两个^是不同的意思。

相反意思的元字符

元字符 描述
\w 查找单词字符
\W 查找非单词字符
\d 查找数字
\D 查找非数字字符
\b 匹配单词边界
\B 匹配非单词边界

呵呵,其实直接用/^\D+$/就可以查找所有非数字了。

限制数字

我们知道[]里面的表达式只能匹配一个字符,?表示出现0次或者1次,就是可以选择的意思,+表示出现1次或者大于1次,那么有没有其他的量词呢:

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

举个例子吧:

/[a-z]{1,3}/

上面这个表达式可以匹配:'t','te','tes',但是'test'就不能匹配了,最多1个祖父到三个字符。

语法

{最少匹配的数目, 最多匹配的数目}

转载于:https://www.cnblogs.com/xiaohu1986/p/5233991.html

正则表达式3-兄弟的回复相关推荐

  1. 就想和你上#床能咋地?【ZT】送给没GF的兄弟们

    就想和你上#床能咋地?[ZT]送给没GF的兄弟们 回复  我一直认为自己是一个很失败的人.别人可以和女朋友谈谈情,做做#爱,我却只有流口 水的份.很早的时候,父亲告诉我,99%的女生会问:你为什么要和 ...

  2. 记一次知乎维权过程——严肃批评某非法引流商

    " 我的文章被人盗版了." 首先请关注本号的云技术君的马甲赶快取关,这里不欢迎你,你如果再抄我的文章去干坏事,你全家得新冠肺炎. 文章被盗版,被洗稿,且用来给菠菜党引流,我很生气. ...

  3. 利用pyhton爬虫(案例4)--你想要的图片都在这

    学习笔记 爬取X度某吧里的小图片们 写个小案例,获取X度里,你指定的吧里,第kkk页之前所有帖子内的图片,当然这个kkk由你定. 爬取步骤 ①获取用户指定吧名和指定页数,得到贴吧主页URL. ②获取1 ...

  4. vue怎么把api 挂载到全局_nvue实现全局挂载

    前言 nvue的无法手动扩展vue.prototype导致有时想用全局挂载就无从下手. 实现思路 由于nvue中的全局变量我们能找到的比较好的就是store和globalData,所以考虑在这两个上挂 ...

  5. 售前售前售前售前售前

    最近刚换了工作,之前一直在做存储,尤其是备份产品的售前支持工作,换工作时也面试了2家公司,总结一点点关于售前支持工作的心得,供各位参考. 好的售前必须做到以下几点:1.尽最大可能帮助销售赢单,即便有时 ...

  6. 又整理了一周爬虫的学习资料,内含入门、实战、视频,请收藏

    说在前面:后台回复「爬虫书籍」,获取「图解http」.「精通正则表达式 」电子书- 基于上次的「整理了一周的Python资料,包含各阶段所需网站.项目,收藏了慢慢来」反响还不错,而且我也说过,这篇文章 ...

  7. Re: 一著名软件公司的java笔试算法题!

    主 题: Re: 一著名软件公司的java笔试算法题! 作 者:   szlhj () 等 级:   信 誉 值:   95 所属论坛:   Java J2SE / 基础类 问题点数:   20 回复 ...

  8. 软件公司安全教育培训经验分享

    文 / 王不留(微信公众号:程序员生存指南) 公司安全教育培训,将在晚上7点半准时开始. 企业内部培训,通常会让人提不起兴趣,而且还是周五的晚上.这一点搞培训,参与度极低,我也有过此类体会. 然而,为 ...

  9. 爬取豆瓣和微博《镇魂》评论进行数据分析

    爬取豆瓣<镇魂>评论并进行数据分析 #引入包 import requests from bs4 import BeautifulSoup import random import matp ...

  10. 为了分析最近热点电影的观众爱好取向,爬取《镇魂》微博评论数据

    爬取<镇魂>微博数据 本文皆在于通过爬虫方式爬取微博镇魂. 编程语言:python2.7 依赖库:requests 系统环境:windows *本篇文章主要参考自Denise_hzf的博客 ...

最新文章

  1. weblogic学习笔记(1)
  2. 零基础可以学好UI设计吗
  3. Github热榜:2021年33篇最酷AI论文综述!多位华人作者入选
  4. 30 万奖金悬赏 | CSDN 软件开发精英赛即日启动!
  5. 网络编程学习笔记(辅助数据)
  6. sqlserver 查找数据混排
  7. 数据降维工具箱drtoolbox
  8. PHP+MySQL登录注册,完整版,详细注释
  9. boost::iterator的用法测试实例
  10. Spring 基于设值函数的依赖注入
  11. css学习之border 边框
  12. redis,memcache,mongodb对比
  13. pyqt5多进程 python_PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
  14. SCSA网络安全----信息安全概述
  15. 使用vue实现四级联动
  16. 方案分享 | 淘宝首页那些“辣眼睛”的图去哪了?
  17. 3个方法解决百度网盘限速问题
  18. luogu P3332 [ZJOI2013]K大数查询
  19. HDU 6287 口算训练
  20. SRB x-sign

热门文章

  1. 实现算法2.15、2.16的程序(一个数组只生成一个静态链表)
  2. HDU 3247 Resource Archiver(AC自动机 + 状压DP + bfs预处理)题解
  3. 使用 Selenium开展Web测试
  4. 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
  5. nowcoder 合并回文子串
  6. Android.mk入门(一)
  7. NYOJ-97-兄弟郊游问题
  8. 常用的物理引擎,图形引擎
  9. Java基础梳理(一)
  10. HTTPClient实现免登陆请求(带cookie请求)