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)

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

  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/binarylei/p/9022830.html
Copyright © 2011-2022 走看看