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

    Java 正则表达式

    正则表达式:一种强大而灵活的文本处理工具。大部分编程语言、数据库、文本编辑器、开发环境都支持正则表达式。正则表达式通过一些规则可以匹配一类字符串。

    首先介绍一款正则表达式测试工具:RegexBuddy

    一、基本语法

    (1) 普通字符

    普通字符字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。

    (2) 转义字符

    字符 说明
    换行符
    制表符
    \
    ^, $, (, ), {, }, ?, +, * 字符本身

    (3) 标准字符

    字符 说明
    d 0-9的数字
    w a-zA-Z0-9_
    s 空格、制表符、换行符等空白字符
    . 任意字符,要匹配" "一般用[sS]

    (4) 自定义字符

    [] 匹配方括号中的任意一个字符

    字符 说明
    [0-9a-zA-Z_] w
    [^abc] abc之处的任意字符

    说明:

    1. 正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了 ^,-之外。
    2. 标准字符集合,除小数点外,如果被包含于中括号,自定义字符集将包含该集合。
      比如 [d.d+]将匹配:数字、小数点、数字

    (5) 量词

    修饰匹配次数的特殊符号。

    字符 说明
    {n} 重复n次
    {m,n} 重复m次,至多n次
    {m,} 重复至少m次
    ? 重复0次或1次{0,1}
    + 重复至少1次{1,}
    * 重复任意次或0次{0,}

    说明:

    1. 匹配次数中的食婪模式(匹配字符越多越好,默认!)
    2. 匹配次数中的非贪婪式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个 "?” 号)

    (6) 字符边界

    本组标记匹配的不是字符而是位置,符合某种条件的位置。

    字符 说明
    ^ 字符串开始的地方
    $ 字符串结束的地方
     匹配单词边界

    说明:

    1.  匹配这样一个位置:前面的字符和后面的字符不全是 w

    (7) 匹配模式

    1. IGNORECASE

      忽略大小写模式匹配时忽略大小写默认情况下,正则表达式是要区分大小写的。

    2. SINGLELINE

      单行模式整个文本看作一个字符串,只有一个开头,一个结尾。使小数点".”可以匹配包含换行符( )在内的任意字符。

    3. MULTILINE

      多行模式每行都是个字符串,都有开头和结尾。在指定了 MULTILINE 之后,如果需要仅匹配字符串开始和结束位置,可以使用 A 和 Z

    (8) 选择符和分组

    图8 选择符和分组

    反向引用( nn)

    1. 每一对()会分配个编号,使用()的捕获根据左括号的顺序从1开始自动编号。
    2. 通过反向引用可以对分组已捕获的字符串进行引用。

    (9) 预搜索(零完断言)

    1. 只进行子表达式的匹配,匹配内容不计入最终的匹配结果,是零宽度这个位置应该符合某个条件。判断当当前位置的前后字符,是否符合指定的条件,但不匹配前后的字符。 是对位置的匹配。

    2. 正则表达式匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式四的仅是位置,或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。占有字符还是零宽度,是针对匹配的内容是否保存到最终的匹配结果中而言的。

    字符 说明
    (?=exp) 断言自身出现的位置的后面能匹配表达式exp
    (?!exp) 断言自身出现的位置的后面不能匹配表达式exp
    (?<=exp) 断言自身出现的位置的前面能匹配表达式exp
    (?<!exp) 断言自身出现的位置的前面不能匹配表达式exp

    注意:

    1. Java 不支持正向的预搜索,即 (?<=exp)

    每天用心记录一点点。内容也许不重要,但习惯很重要!

  • 相关阅读:
    关于java中面向对象特征的总结
    Jemter TCP压测坑:Hex-encoded binary string contains an uneven no. of digits,Hex-encoded binary string contains an uneven no. of digits
    distinct&group by去重的区别
    Idea从gitee上clone项目时候相关问题
    Nginx正向代理
    docker安装MySQL5.7
    Ubuntu server18.04.5环境配置
    Ubuntu18.04.5 server wifi的连接
    git commit 提交规范
    关于js的学习的推介
  • 原文地址:https://www.cnblogs.com/binarylei/p/9022830.html
Copyright © 2011-2022 走看看