• 正则表达式字符串[置顶] 正则表达式的或(|)(一个烂正则表达式引发的博客)


    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

        Email:longsu2010 at yeah dot net

        如题,我很幸运的宣告,这个烂正则表达式的作者是我。

        起源于Unix的正则表达式一直是字符串理处的瑞士军刀,明天用这刀写了一段程序,结果与预期的不符相。如下

        /^Task0|Task1|Task10$/

        这个正则表达式我待期的结果是只匹配Task0、Task1、Task10三者之一,然而它却能匹配Task11、Task12等任何故Task1头开的字符串。

        事同说这个正则表达式匹配的应该是TaskTaskTask10这样的字符串,显然是不对的,不要再糊涂了。|(或)的义含是匹配其左边或者右边的表达式,不是字符。

        而如下的正则表达式却能失掉预期的结果

        /^(Task0|Task1|Task10)$/

        这两个正则表达式什么区别?

        咋一看,一样吧?

        先说|(或)的义定,如下:

        |(或)代表阁下表达式恣意匹配一个。它老是先实验匹配左边的表达式,一旦胜利则跳过匹配边右的表达式。如果|没有被括包在小括号括号()中,则它的范围是个整正则表达式。

        每日一道理
    航行者把树比作指引方向的路灯,劳动者把树比作遮风挡雨的雨伞,诗人把树比作笔下的精灵,而我却要把树比作教师,它就是为我们遮风挡雨的伞,指明方向的路灯,打开知识殿堂的金钥匙。

        在现看看/^Task0|Task1|Task10$/是如何匹配的,假如测试的字符串是Task11。

        1、先用^Task0测试,看Task11是不是足满以Task0作为开始,测试结果为不足满。

        2、用Task1测试Task11,看Task11中是不是括包Task1,测试结果为足满,测试束结,测试的终最结果的匹配。

        看看/^(Task0|Task1|Task10)$/是如何匹配的,仍设假测试字符串为Task11。

        1、测试Task11是不是以Task0、Task1、Task10三者之一头开,测试结果为足满以Task1头开。

        2、以后是一个$符号,要求字符串束结。也就是说仅仅匹配Task0、Task1、Task10三者之一,所以测试结果是不匹配。

        一不留神写错了,在这里做个单简的述记,算是给大家提个醒,更是给自己提个醒。

    文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!

  • 相关阅读:
    并发编程(一) 操作系统基础和进程
    操作系统发展史
    网络编程(三) 大文件传输与UDP通信
    网络编程(二)-socket套接字
    网络编程(一)
    排序算法之冒泡法
    第二章 算法基础 思考题2-1
    查找算法之二分查找
    排序算法之归并排序
    排序算法之插入排序
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3069758.html
Copyright © 2020-2023  润新知