zoukankan      html  css  js  c++  java
  • 正则表达式入门

    根据使用环境的不同,有的时候正则表达式需要"/d*/",有的时候不需要,直接"d*",使用的时候还需要根据环境来

     

    常用正则关键符号:

    元字符

    .

    匹配除了换行符以外的任意字符

    w

    word 匹配字母或数字或下划线或汉字等

    s

    space 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等

    d

    digital 表示数字

    

    break 单词分割符,匹配一个位置

    ^

    字符串的开始

    $

    字符串的结尾

    去除元字符的含义

    重复

    {2}

    前面连续重复出现的次数2次

    {5,12}

    前面连续重复出现5-12次

    {5,}

    重复5次或者更多次

    *

    0次或者多次,它指定*前边的内容可以连续重复使用任意次以使整个表达式得到匹配

    +

    则匹配重复1次或更多次。{1,}

    ?

    重复0次或者1次

    字符类,[]限定范围内的字符

    [aeiou]

    就匹配任何一个英文元音字母

    [.?!]

    匹配标点符号(.或?或!)

    [a-z0-9A-Z_]

    也完全等同于w(如果只考虑英文的话)

    分枝条件, |

    0d{2}-d{8}|0d{3}-d{7}

    一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

    分组,重复多个字符(abc){2} 括号里面为一组

    (d{1,3}.){3}d{1,3}

    简单的IP地址匹配表达式

    ((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)

    正确的分组ip匹配

    反义,大写元字符,[^xxx]

    W

    匹配任意不是字母,数字,下划线,汉字的字符

    S

    匹配任意不是空白符的字符

    D

    匹配任意非数字的字符

    B

    匹配不是单词开头或结束的位置

    [^x]

    匹配除了x以外的任意字符,这里的^和字符串起始复用了

    [^aeiou]

    匹配除了aeiou这几个字母以外的任意字符

    后向引用,其他见表4

    1

    代表分组1匹配的文本

    (w+)s+1

    用来匹配重复的单词,像go go, 或者kitty kitty。

    (?<Word>w+)s+k<Word>

    用来匹配重复的单词,像go go, 或者kitty kitty。

    贪婪与懒惰原则

    通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

    加上?后,就尽可能的少

    表5.懒惰限定符

    代码/语法

    说明

    *?

    重复任意次,但尽可能少重复

    +?

    重复1次或更多次,但尽可能少重复

    ??

    重复0次或1次,但尽可能少重复

    {n,m}?

    重复n到m次,但尽可能少重复

    {n,}?

    重复n次以上,但尽可能少重复

    分组语法:分组命令、断言、注释

    表4.常用分组语法

    分类

    代码/语法

    说明

    捕获

    (exp)

    匹配exp,并捕获文本到自动命名的组里

    (?<name>exp)

    匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

    (?:exp)

    匹配exp,不捕获匹配的文本,也不给此分组分配组号

    零宽断言

    (?=exp)

    匹配exp前面的位置

    (?<=exp)

    匹配exp后面的位置

    (?!exp)

    匹配后面跟的不是exp的位置

    (?<!exp)

    匹配前面不是exp的位置

    注释

    (?#comment)

    这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    处理选项:不同的编程语言、工具开启模式的方法可能不一样,需要关注的时候谷歌下

    忽略大小写

    多行模式

    单行模式

    忽略空白

    显示部门

    vim magic 

    (m):除了 $ . * ^ 之外其他元字符都要加反斜杠。 默认设置nomagic 

    (M):除了 $ ^ 之外其他元字符都要加反斜杠。

    这个设置也可以在正则表达式中通过 m M 开关临时切换。 m 后面的正则表达式会按照 magic 处理,M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。

    参考文档

    http://deerchao.net/tutorials/regex/regex.htm

  • 相关阅读:
    Spring3.2新注解@ControllerAdvice
    Spring读取加密属性文件处理--待整理
    SpringMVC之三:配置Spring MVC Controller
    深入理解DIP、IoC、DI以及IoC容器
    缓存与数据库一致性之三:缓存穿透、缓存雪崩、key重建方案
    Spring容器初始化过程
    Spring框架中的@Import、@ImportResource注解
    @SpringBootApplication注解分析
    Spring bean加载之1:BeanFactory和FactoryBean
    内存使用情况
  • 原文地址:https://www.cnblogs.com/suyuan1573/p/zhengze.html
Copyright © 2011-2022 走看看