• 正则表达式模式修正符


    模式修正符号在正则表达式定界符之外使用(最后一个斜线“/”之后),例如“php/i”。其中“/php/”是一个正则表达式的模式,而“i”就是修正此模式所使用的修正符号,用来匹配时不区分大小写。模式修正符可以调整正则表达式的解释,扩展了正则表达式在匹配、替换等操作时的某些功能,而且模式修正符号也可以组合使用,更增强了正则表达式的处理能力。例如“/php/Uis”则是使用“U”、“i”和“s”三个模式修正符组合在一起使用。模式修正符对编写简洁而简小的表达式大有帮助,在下面的表格中,列出了一些常用的模式修正符及其功能说明,如下表所示。

    1
      下面是几个简单的示例,用以说明表中模式修正符中的使用。在使用模式修正符时,其中的空格和换行被忽略,如果使用其他非模式修正字符会导致错误。如下所示:
      模式“/Web Server/ix”可以用来匹配字符串“webServer”,忽略大小写和空白。
      模式“/a.*e/”去匹配字符串“abcdefgabcdefgabcdefg”,由于模式中的“.*”按贪婪匹配,会从这个字符串中匹配出“abcdefgabcdefgabcde”。从第一个“a”字母开始到最后一个“e”字母结束,都属于“.*”的内容,所以不是“abcde”。如果想取消这种贪婪匹配,想从第一个字母“a”只匹配到第一个字母“e”就结束,匹配出字符串“abcde”,可以使用模式修正符号“U”或在模式中使用“.*”后面跟上“?”,例如使用模式“/a.*e/U”或“/a.*?e/”。相反,如果两个一起使用又启用了贪婪匹配,例如模式“/a.*?e/U”则匹配字符串“abcdefgabcdefgabcdefg”中的“abcdefgabcdefgabcde”,而不是“abcde”。建议在模式中使用“.*”后面跟上“?”代替模式修正符号“U”,因为在其他一些编程语言中,如果也是采用Perl兼容的正则函数,可能没有模式修正符号“U”,例如JavaScript中就不存在这个模式修正符号。
      模式“/^is/m”可以匹配字符串“this is a tes”中的is,因为使用模式修正符“m”将字符串视为了多行,第二行的开头出现了“is”则匹配成功。默认的正则开始“^”和结束“$”将目标字符串作为单一的一“行”(甚至其中包含有换行符也是如此)。
     
  • 相关阅读:
    思考的乐趣
    编程的知识体系
    Android用Intent来启动Service报“java.lang.IllegalArgumentException: Service Intent must be explicit”错误的解决方法
    手拼SQL小技巧,WHERE 1=1
    n+1 < n , are you sure?
    java swing 去掉按钮文字周围的焦点框
    MyBatis使用动态SQL标签的小陷阱
    String、StringBuffer、StringBuilder的一些小经验……
    SQL Server 2012安装后找不到服务器名称的解决办法!!!
    CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)
  • 原文地址:https://www.cnblogs.com/ncong/p/3907957.html
Copyright © 2020-2023  润新知