正则表达式入门课
涂伟忠
高级研发工程师
24700 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 18 讲
正则表达式入门课
15
15
1.0x
00:00/00:00
登录|注册

01 | 元字符:如何巧妙记忆正则表达式的基本元件?

思考题
元字符的分类与记忆技巧
元字符的概念
总结

该思维导图由 AI 生成,仅供参考

你好,我是涂伟忠。今天是课程的第一讲,我们一起来学习组成正则表达式的基本单元——元字符。

元字符的概念

在开篇词中,我们提到了正则常见的三种功能,它们分别是:校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。
那你可能会好奇,正则是如何完成这些工作的呢?让我们先从简单的字符串查找和替换讲起。
我相信你一定在办公软件,比如 Word、Excel 中用过这个功能。你可以使用查找功能快速定位关注的内容,然后使用替换,批量更改这些内容。
让我们再回过头看看正则表达式。正则表达式,简单地说就是描述字符串的规则。在正则中,普通字符表示的还是原来的意思,比如字符 a,它可以匹配“Hanmeimei is a girl”中的 H 之后的 a,也可以匹配 is 之后的 a,这个和我们日常见到的普通的字符串查找是一样的。
但除此之外,正则还可以做到普通的查找替换做不到的功能,它真正的强大之处就在于可以查找符合某个规则的文本
举个例子,假如你想查找文本中的所有数字,如果不会正则,可能需要手动敲数字,从 0 到 9 这样操作 10 次,一个个去查找,很麻烦。但如果用正则的话就方便很多了,我们直接使用 \d 就可以表示 0-9 这 10 个数字中的任意一个,如下图所示。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何巧妙记忆正则表达式的基本元件——元字符。作者通过分类记忆的方法,将元字符分为表示单个特殊字符、空白符、量词和范围四类,并针对每类元字符进行了详细讲解和示例演示。通过清晰的分类和丰富的示例,帮助读者快速了解和掌握正则表达式的基本元件,为进一步深入学习和应用打下了良好的基础。文章强调了学习方法,鼓励读者在学习过程中多做练习,并建议将学到的知识讲给他人,以加深记忆和掌握程度。最后,作者提出了一个思考题,引导读者通过练习来巩固所学知识。整体而言,本文以清晰的分类和丰富的示例为特点,为读者提供了系统学习正则表达式元字符的有效方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《正则表达式入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(170)

  • 最新
  • 精选
  • MiracleWong
    题目答案:1[3-9]\d{9} 我负责给大家发一下搜索到的正则网站or软件吧,大家各取所好。 1. https://regex101.com/ (老师用的) 2. https://tool.oschina.net/regex/ 3. http://tool.chinaz.com/regex/ 4. https://www.w3cschool.cn/tools/index?name=re 5. https://c.runoob.com/front-end/854 6. http://tools.haokh.net/Regex 7. Windows 上推荐:RegexBuddy 8. Mac上推荐:Expressions 备注:1中支持账号功能,可以保存后进行分享。2~6都包含大量常用的正则示例。7&8 都需要付费。

    作者回复: 感谢分享👍🏻

    2020-06-16
    9
    104
  • 君无悔
    \d \w\ \s这些如果能讲一下为什么用这些字母,是什么单词的缩写,这样估计更好记忆

    作者回复: 感谢你的建议 d 是 digit 数字 w 是 word 单词 s 是 space 空白

    2020-07-30
    3
    56
  • D
    ^1[^012][0-9]{9}

    作者回复: 从本节的思考题看,这个回复是没问题的。 但要注意,这里最好用 [3-9],因为 [^012] 表示不是数字 0,1,2,那字母 a 呢? 1a800138000 能匹配上么?

    2020-07-05
    27
  • 一条鲁蛇🐍
    我有一些个人想法:老师现在说的都是自己已经懂的,但有可能并不知道我们这些菜鸟有哪些不懂的。 因此,就会对一件东西有着模糊两可的概念,比如。 1、a-z,0-9 都是可见可敲打出来的字符,为何换行制表符就要用两个可见字符'\n','\t'来表示? 那么 制表符出现两次 \t{2} 是表示't'出现两次,还是'\t'出现两次? 2、\d* 匹配三行那个实验;为何会匹配 6 次? 3、假如换行也是一个字符,那是不是意味着所谓的多行其实就只是一行数据?只不过显示上我们看到的是在多行?然后到了最后一行,我输入的时候,没有敲打下换行键,是不是就是说这一行没有换行符? 好纠结啊,感觉一直搞不明白....望老师解疑。 还有,多多希望老师在精选留言里面,多回复有疑惑的留言,拨开乌云才能见阳光。 谢谢。

    作者回复: 问题都很好👍🏻 1,换行和制表符是不可见的,英文字母数字标点表示不出来。这么表示是约定的,只要记住就行。 2,这个后面会详细讲解,因为星号是0到多次,0次就是空白了,多了三次主要是因为匹配上了空白。 3,换行是一个特殊字符,你可以理解成特殊处理了。没有敲换行,这一行确实没有换行,一般编辑器比如notepad++,sublime text编辑的时候都可以看到行号。另外你可以使用编程语言读取自己输入的文本,答应出来看一看有没有换行。

    2020-06-10
    4
    17
  • 面白i小黄毛
    没想明白为啥/d*可以匹配6个,/d+可以匹配3个,求解答

    作者回复: 问号里面附有链接,自己可以测试下。这个会在后面量词与贪婪里面讲,到时候再结合着理解一下

    2020-06-09
    8
    16
  • 数学汤家凤
    1[3-9]\d{9} ? + * 这么记 ? :有还是没有?有1无0 -> 0到1次 + :正数 > 0 -> 1到无穷 * :没得选了,所以1 到无穷 : )

    作者回复: 666,这个思路很可以啊

    2020-07-10
    5
    14
  • Jock
    感谢老师的课程,讲的非常的详细! 课后思考题: r"1[3-9]\d{9}"

    作者回复: 👍🏻

    2020-06-08
    14
  • BillionY
    思考题答案:1[3-9][0-9]{9} 很想知道如何一行reg搞定密码验证:长度8~16,必须包含大小写且需要两种以上特殊字符?

    作者回复: 这种问题虽然正则也可以解决,但长度判断部分,推荐使用普通的字符串长度判断,文本组成使用正则去判断。如果非得用正则判断长度,等后面学了断言你就会有一些思路了。

    2020-06-10
    9
  • Isaac
    老师,怎么感觉“ | ”和 “[]” 表示的意思一样呀,比如 "a|b" 和 "[ab]" 不都是要么 a 要么 b 的意思么?

    作者回复: 不一样,中括号里面是单个字符多选一,不能是多个字符多选一,比如xy或ab用中括号搞不定。管道符号表示多个分支多选一,不仅仅是单个字符,多个字符的也可以。总之能力上管道符号更强,但单字符多选一的时候,中括号更方便。

    2021-03-08
    8
  • giteebravo
    \d{11} 表示单个数字出现 11 次 换成 \d{11} 表示一个长度为 11 且仅由 0-9 中任意数字组成的字符串 会不会更好?

    作者回复: 对的,但从正则上去理解就是“数字重复出现11次”,你的这种表达方式更容易理解。

    2020-06-08
    2
    7
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部