• 初步了解认识正则表达式(Regex)


    如果你感到这篇文章对您有所帮助,那请您给我一个免费的赞吧QWQ!

    如果想要深入理解什么是正则表达式,请购买教材《形式语言与自动机》,相信学完它之后一定会让你更加理解正则表达式!

     

    1.你的同事现在正在为甲方提供的要求而犯愁。甲方有个要求,那就是产生一个只含有a和b的字符串,但是末尾必须是aaba或babb。

    虽然你的同事觉得这个代码可以写,但是他想把代码写的简单点,可是他没有学过正则表达式,真是愁死人了!

    如果你学会了正则表达式,那你就可以轻松的帮到他。

    2.你想知道网址是怎么生成的吗?每次看到那一长串的东西就觉得头疼。。。学会正则表达式,就不用担心这个了。

    不多废话了,咱们开始说说啥是正则表达式吧!

     

    什么是正则表达式?正则表达式就是个句子。很好理解吧。

     

    但是想要写出一个句子,并不是随心所欲的!在语文中,“我吃了饭”可千万不能写成“饭吃了我”,也不能写成“我吃了吃饭吃了”

    同样,要写出正则表达式,也是需要遵循一定的规则的,这个呢就是正则语法。不过在这里我们先不去考虑语法,毕竟小孩子学会说话不是去记语法学会的吧!

    通过对语法的研究,我们可以发现,只需要三种操作,便可以生成正则表达式!太方便了家人们,直接来吧。

     

    第一个操作:连接,没有符号。“我吃了饭”这句话实际上就是‘我吃’‘了饭’的连接。在计算科学中,我们用x::=yz来表示,右边是两个句子的连接,左边是新句子。

    第二个操作:重复,用*表示。x::=y*表示y可以重复多次出现,也可以直接不出现。举个例子:y=‘吃’,那么句子“吃吃吃吃吃吃吃”和句子“ ”都可以是x。

    第三个操作:选择,用|表示。x::=y|z表示x既可以是y,也可以是z。

    只要这三种操作,就可以写出任何正则表达式。

     

    简单吧?然而事情并没有这么简单。。。现实中的正则表达式有的往往会很复杂,你只用这三个操作写,人家直接大呼我看不懂,你自己还容易写错,那多不好!

    所以我们还需要一些辅助的方法和技巧。在这里给出一个网址供大家参考:最全的常用正则表达式大全_正则表达式_脚本之家 (jb51.net)

    不过,这网址里面给的东西太多了,这里还是拿出几个比较重要的说一下:

    x::=y?  问号是个神奇的符号,不过在这里,它表示x是y或者x是空,和疑问的关系不大哈哈哈。

    x::=y+ 这个是 * 符号的高阶版,表示x是至少出现一次的y,y不能不出现了!(具体请学习离散数学的闭包)

    x::=[a-z]表示x可以是字符a到字符z的所有字符。这个很常用,毕竟表示一堆字符的时候总不能你是一个一个一个列出来吧。

     

    最后,分享一个网站,打开看看吧。RegExr:学习,构建和测试正则表达式

     

  • 相关阅读:
    大数据技术生态介绍
    OpenCV-绘制虚线
    【API篇】六、Flink输出算子Sink
    人事管理软件为企业提供了哪些价值?
    `ExecutorService` 接口
    FL Studio2022水果编曲音乐制作软件自带完整插件
    2023年中国商用服务机器人行业发展概况分析:国产机器人厂商向海外进军[图]
    优化——多目标规划
    184.Flume(一):flume概念,flume安装,实时监控单个文件追加内容,监控目录下新增多个新文件,监控目录下多个文件追加内容
    【位运算】只出现一次的数字
  • 原文地址:https://www.cnblogs.com/weiyixuan2002621/p/16368783.html