正则表达式

  • 正则表达式就是以某种方式来描述字符串,可以说“如果一个字符串含有这些东西,那么它就是我正在找的东西。”

  • 在java中,\的意思是“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。”

  • 在正则表达式中,括号有着将表达式分组的效果,而竖直线|则表示或操作。

  • (-|\\+)? : 这个正则表达式表示字符串的起始字符可能是一个-或+,或二者皆没有(因为后面跟着?修饰符)。因为字符+在正则表达式中有特殊的意义。所以必须使用\将其转义,使之成为表达式的一个普通字符

  • String类自带非常有用的正则表达式工具—split()方法,其功能是“将字符串从正则表达式匹配的地方切开”。

public class TestOne {
    public static String knights = 
            "Then, when you have found the shrubbery,you must " + 
            "cut down the mightiest tree in the forest..."+
            "with.... a herring!";

    public static void main(String[] args) { 
         split(" "); //按空格划分字符串
         split("\\W+");//非单词字符一个或多个
         split("n\\W+");//n开头非单词字符一个或多个
    }

    public static void split(String reges) {
        System.out.print(
                Arrays.toString(knights.split(reges))
                );
    }
}
  • 替代

  • 部分正则表达式
    这里写图片描述
    这里写图片描述
    这里写图片描述




  • 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符。

元字符介绍

  • “^” :^会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。

  • " 会匹配行或字符串的结尾

  • “\b” :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中”This is Regex”匹配单独的单词 “is” 正则就要写成 “\bis\b” , \b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界

  • “\d”: 匹配数字,例如要匹配一个固定格式的电话号码以0开头前4位后7位,如0737-5686123 正则:^0\d\d\d-\d\d\d\d\d\d\d$ 这里只是为了介绍”\d”字符,实际上有更好的写法会在 下面介绍。

  • “\w”:匹配字母,数字,下划线. 例如我要匹配”a2345BCD__TTz” 正则:”\w+” 这里的”+”字符为一个量词指重复的次数,稍后会详细介绍。

  • “\s”:匹配空格 例如字符 “a b c” 正则:”\w\s\w\s\w” 一个字符后跟一个空格,如有字符间有多个空格直接把”\s” 写成 “\s+” 让空格重复

  • “.”:匹配除了换行符以外的任何字符,这个算是”\w”的加强版了”\w”不能匹配 空格 如果把字符串加上空格用”\w”就受限了,看下用 “.”是如何匹配字符”a23 4 5 B C D__TTz” 正则:”.+”

  • “[abc]”: 字符组 匹配包含括号内元素的字符 ,这个比较简单了只匹配括号内存在的字符,还可以写成[a-z]匹配a至z的所以字母就等于可以用来控制只能输入英文了

几种反义 : 写法很简单改成大写就行了,意思与原来的相反,这里就不举例子了

  • “\W” 匹配任意不是字母,数字,下划线 的字符

  • “\S” 匹配任意不是空白符的字符

  • “\D” 匹配任意非数字的字符

  • “\B” 匹配不是单词开头或结束的位置

  • “[^abc]” 匹配除了abc以外的任意字符

量词
- “a+”与”a*”不同在于”+”至少是一次而”*” 可以是0次

部分内容From : http://www.cnblogs.com/China3S/archive/2013/11/30/3451971.html

文章: http://www.regexlab.com/zh/regref.htm
匹配器:http://www.regexlab.com/zh/workshop.htm?pat=c&txt=abcde


1.普通字符:字母,数字,汉字,下划线,以及后面没有特殊定义的标点符号,都是“普通字符”。
表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符

2.简单的转义字符(\用法)
(1)一些不便书写的字符,采用在前面加”\”的方法
(2)还有一些有特殊用处的标点符号,在前面加”\”后,就代表该符号本身
比如:^, "′′" ”字符,则表达式就需要写成”\^”和”$”。

3.能够与”多种字符”匹配的表达式
(1)可以匹配”多种字符”其中的任意一个字符。比如:表达式”\d”可以匹配任何一个数字。

4.自定义能够匹配“多种字符”的表达式
(1)使用方括号[]包含一系列字符,能够匹配其中任意一个字符。用[^]包含一系列字符,则能够匹配
其中字符之外的任意一个字符。

5.修改匹配次数的特殊符号
(1)”[bcd][bcd]”可以写成”[bcd]{2}”.

6.其他一些代表抽象意义的特殊符号
(1)一些符号在表达式中代表抽象的特殊意义

7.匹配次数中的贪婪和非贪婪
(1)贪婪:”\w+”,”*”,”{m,n}”在匹配的时候,总是尽可能多的匹配符合它规则的字符
(2)非贪婪:在修饰匹配次数的特殊符号后再加上一个”?”号,则可以使匹配次数不定的表达式尽可能少的匹配。

8.反向引用\1,\2…
(1)表达式在匹配时,表达式引擎会将小括号 “( )” 包含的表达式所匹配到的字符串记录下来。小括号包含的表达式所匹配到
的字符串可以单独获取。
(2)小括号包含的表达式所匹配到的字符串” 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。

9.预搜索,不匹配;反向预搜索,不匹配
(1)格式:”(?=xxxxx)”,在被匹配的字符串中,它对所处的 “缝隙” 或者 “两头” 附加的条件是:所在缝隙的右侧,
必须能够匹配上 xxxxx 这部分的表达式。
(2)格式:”(?!xxxxx)”,所在缝隙的右侧,必须不能匹配 xxxxx 这部分表达式。

1.当用某种边界来查找,而所要获取的内容又不包含边界时,必须使用小括号来指定所要的范围,比如:”(.?)”
2.在表达式 “\s”,”\d”,”\w”,”\b” 表示特殊意义的同时,对应的大写字母表示相反的意义
3.如果要要求表达式所匹配的内容是整个字符串,而不是从字符串中找一部分,那么可以在表达式的首尾使用 “^” 和 “ \d+ ” 要求整个字符串只有数字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值