精华内容
下载资源
问答
  • 常用正则表达式符号
    2020-02-27 11:53:35
    符号含义例子匹配结果
    *匹配前面的字符、子表达式或括号里的字符0次或多次a*b*

    aaaaaaaa;

    aaabbbbb;

    bbbbbbbb;

    +匹配前面的字符、子表达式或括号里的字符至少1次a+b+

    aaaaaaab;

    aaabbbbb;

    abbbbbbb;

     

    []匹配中括号里的任意字符(相当于“任选一个”)[A-Z]*

    APPLE;

    CAPITALS;

    QWERTY;

    ()表达式编组(在正则表达式的规则里编组会优先运行)(a*b)*

    aaabaab;

    abaaab;

    ababaaaaab;

    {m,n}匹配前面的字符、子表达式或括号里的字符m到n次(包含m或n)a{2,3}b{2,3}

    aabbb;

    aaabbb;

    aabb;

    [^]匹配任意一个不在中括号里的字符[^A-Z]*

    apple;

    lowercase;

    qwerty;

    |匹配任意一个由竖线分割的字符、子表达式(注意是竖线,不是大写字母I)b(a|i|e)d

    bad;

    bid;

    bed

    .匹配任意单个字符(包括括号、数字和空格等)a.d

    bad;

    bzd;

    b$d;

    b d

    ^指字符串开始位置的字符或子表达式^a

    apple;

    asdf;

    a;

    \转义字符(把有特殊含义的字符转换成字面形式)

    \.\|

    .\|

    $经常在正则表达式的末尾,表示“从字符串的末端匹配”。如果不用它,每个正则表达式实际都带着“.*”模式,只会从字符串开头进行匹配。这个符号可以看成是^符号的反义词。[A-Z]*[a-z]*$

    ABCabc;

    zzzyx;

    Bob;

    ?!“不包含”。这个奇怪的组合通常放在字符或正则表达式前面,表示字符不能出现在目标字符里。这个符号比较难用,毕竟字符通常会在字符串的不同部位出现。如果要在整个字符串中彻底排除某个字符,就加上^和$符号。^((?![A-Z]).)*$

    no-caps-here;

    $ymb01sa4ef!ne;

     

    例如经典的识别邮箱地址的表达式:

    [A-Za-z0-9\._+]+@[A-Za-z]+\.[com|org|edu|net]

    更多相关内容
  • 对Python中正则表达式的理解,主要就是对符号的理解,本文即对Python中常用正则表达式符号进行简析。其主要的符号有: . 默认匹配一个字符,不包含换行符,如果设置DOTALL则匹配换行符 ^ 匹配行首 $ 匹配行尾 * ...
  • PHP常用正则表达式,具体内容如下所述: $regex = '[\u4e00-\u9fa5]'; //匹配中文字符的正则表达式 $regex = '^[\u4E00-\u9FA5A-Za-z0-9]+$'; or $regex = '^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$'; //中文、英文、数字...
  • 主要介绍了正则表达式同时匹配中英文及常用正则表达式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 1.正则表达式到底是什么东西? 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)是用于描述字符串规则的工具。换句话说,正则表达式就是记录文本规则的代码。 正则表达式语言由两种...

    1.正则表达式到底是什么东西?

    正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)是用于描述字符串规则的工具。换句话说,正则表达式就是记录文本规则的代码。

    正则表达式语言由两种基本字符类型组成原义(正常)文本字符元字符(metacharacter)。元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

    在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard),也就是 * 和 ? 。如果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像010-12345678或0376-7654321)。

    2.常用正则表达式符号

    (1)常用的元字符
    \b 代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。
    . 匹配除了换行符以外的任意字符。
    \d 匹配一位数字(0,或1,或2,或……)。
    \s 匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
    \w 匹配字母或数字或下划线或汉字等。
    ^ 匹配字符串的开始。
    $ 匹配字符串的结束。有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^和$的意义就变成了匹配行的开始处和结束处。

    (2)常用的限定符
    * 代表数量——指定 * 前边的内容可以连续重复使用任意次以使整个表达式得到匹配。
    .* 连在一起就意味着任意数量的不包含换行的字符。
    + 是和 * 类似的元字符,不同的是: * 匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次
    [] 匹配没有预定义元字符的字符集合。
    例如:
    [0-9] 代表一位数字,与\d就是完全一致的;
    [a-z0-9A-Z_] 完全等同于\w(如果只考虑英文的话)。
    [.?!] 匹配标点符号( . 或 ? 或 ! )

    (3)常用的反义代码
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符

    (4)常用分组语法
    捕获:
    (exp) 匹配exp,并捕获文本到自动命名的组里
    (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
    零宽断言:
    (?=exp) 匹配exp前面的位置
    (?<=exp) 匹配exp后面的位置
    (?!exp) 匹配后面跟的不是exp的位置
    (?<!exp) 匹配前面不是exp的位置
    注释:
    (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    (5)懒惰限定符
    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    3.正则表达式详细介绍

    字符转义
    如果你想查找元字符本身的话,比如查找 . ,或者 * ,是没办法直接指定它们的,因为它们会被解释成别的意思。这时你就得使用 \ 来取消这些字符的特殊意义。因此,应该使用 \. 和 \* 。当然,要查找 \ 本身,得用 \\。
    例如:china\.net 匹配 china.net,C:\\Windows匹配C:\Windows。

    分枝条件
    正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。具体方法是用 | 把不同的规则分隔开。

    我们来看一个复杂的表达式:\(?0\d{2}[) -]?\d{8}
    “(” 和 “)” 也是元字符,所以在这里需要使用转义。这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符 \( ,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是 ) 或 - 或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

    不幸的是,刚才那个表达式也能匹配010)12345678或(022-87654321这样的“不正确”的格式。要解决这个问题,我们需要用到分枝条件。正则表达式里的分枝条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。听不明白?没关系,看例子:
    0\d{2}-\d{8}|0\d{3}-\d{7} 这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。

    (0\d{2})[- ]?\d{8}|0\d{2}[- ]?\d{8} 这个表达式匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔。你可以试试用分枝条件把这个表达式扩展成也支持4位区号的。

    \d{5}-\d{4}|\d{5} 这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题:使用分枝条件时,要注意各个条件的顺序。如果你把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

    分组
    我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。例如:
    (\d{1,3}.){3}\d{1,3} 是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。
    不幸的是,它也将匹配256.300.888.999这种不可能存在的IP地址。如果能使用算术比较的话,或许能简单地解决这个问题,但是正则表达式中并不提供关于数学的任何功能,所以只能使用冗长的分组,选择,字符类来描述一个正确的IP地址:(2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?
    (PS: IP地址中每个数字都不能大于255。IP 地址里的数字可以包含有前导 0 (leading zeroes),所以01.02.03.04 这样前面带有0的数字, 是正确的IP地址。)

    反义
    有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义。
    常用的反义正则表达式:
    \W 匹配任意不是字母,数字,下划线,汉字的字符
    \S 匹配任意不是空白符的字符
    \D 匹配任意非数字的字符
    \B 匹配不是单词开头或结束的位置
    [^x] 匹配除了x以外的任意字符
    [^aeiou] 匹配除了aeiou这几个字母以外的任意字符
    例子:\S+ 匹配不包含空白符的字符串。
    <a[^>]+> 匹配用尖括号括起来的以a开头的字符串。

    后向引用
    后向引用用于重复搜索前面某个分组匹配的文本。使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。例如,\1代表分组1匹配的文本。

    请看一个较为复杂的示例:
    \b(\w+)\b\s+\1\b 可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个或几个空白符(\s+),最后是分组1中捕获的内容,也就是前面匹配的那个单词(\1)。

    你也可以自己指定子表达式的组名。要指定一个子表达式的组名,请使用这样的语法:(?<Word>\w+)(或者把尖括号换成 ’ 也行:(?‘Word’\w+)),这样就把\w+的组名指定为Word了。要反向引用这个分组捕获的内容,你可以使用\k<Word>,所以上一个例子也可以写成这样:\b(?<Word>\w+)\b\s+\k<Word>\b。

    (?:exp) 不会改变正则表达式的处理方式,只是这样的组匹配的内容不会像前两种那样被捕获到某个组里面,也不会拥有组号。你可以使用(?:exp)这样的语法来剥夺一个分组对组号分配的参与权。

    常用的捕获正则表达式 :
    (exp) 匹配exp,并捕获文本到自动命名的组里
    (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
    (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

    零宽断言
    零宽断言指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
    它用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此被称为零宽断言。

    下面给出几个例子:
    (?=exp) 也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp。比如:
    \b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分),例如查找I’m singing while you’re dancing.时,它会匹配sing和danc。
    (?<=exp) 也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp。比如:
    (?<=\bre)\w+\b会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
    (?<=\s)\d+(?=\s) 匹配以空白符间隔的数字(再次强调,不包括这些空白符)。

    常用的零宽断言正则表达式:
    (?=exp) 匹配exp前面的位置
    (?<=exp) 匹配exp后面的位置
    (?!exp) 匹配后面跟的不是exp的位置
    (?<!exp) 匹配前面不是exp的位置

    负向零宽断言
    前面我们提到过怎么查找不是某个字符或不在某个字符类里的字符的方法(反义)。但是如果我们只是想要确保某个字符没有出现,但并不想去匹配它时怎么办?例如,如果我们想查找这样的单词–它里面出现了字母q,但是q后面跟的不是字母u,我们可以尝试这样:
    \b\w*q[^u]\w*\b 匹配包含后面不是字母u的字母q的单词。但是如果多做测试(或者你思维足够敏锐,直接就观察出来了),你会发现,如果q出现在单词的结尾的话,像Iraq,Benq,这个表达式就会出错。这是因为[^u]总要匹配一个字符,所以如果q是单词的最后一个字符的话,后面的[^u]将会匹配q后面的单词分隔符(可能是空格,或者是句号或其它的什么),后面的\w*\b将会匹配下一个单词,于是\b\w*q[^u]\w*\b就能匹配整个Iraq fighting。负向零宽断言能解决这样的问题,因为它只匹配一个位置,并不消费任何字符。

    下面给出几个例子:
    (?!exp) 零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp。例如:\d{3}(?!\d) 匹配三位数字,而且这三位数字的后面不能是数字;\b((?!abc)\w)+\b 匹配不包含连续字符串abc的单词。
    (?<!exp) 零宽度负回顾后发断言,断言此位置的前面不能匹配表达式exp。例如:(?<![a-z])\d{7} 匹配前面不是小写字母的七位数字。

    一个更复杂的例子:
    (?<=<(\w+)>).*(?=<\/\1>) 匹配不包含属性的简单HTML标签内里的内容。(?<=<(\w+)>)指定了这样的前缀:被尖括号括起来的单词(比如可能是<\b>),然后是 .* (任意的字符串),最后是一个后缀(?=<\/\1>)。注意后缀里的\/,它用到了前面提过的字符转义;\1则是一个反向引用,引用的正是捕获的第一组,前面的(\w+)匹配的内容,这样如果前缀实际上是<\b>的话,后缀就是</b>了。整个表达式匹配的是< b>和</b>之间的内容(再次提醒,不包括前缀和后缀本身)。

    注释
    (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
    小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。

    贪婪与懒惰
    当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

    有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样 .*? 就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

    a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。

    常用的懒惰正则表达式:
    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    4.常用正则表达式

    匹配首尾空格的正则表达式:(^\s*)|(\s*$)
    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$
    只能输入数字:"^[0-9]*$"。
    只能输入n位的数字:"^\d{n}$"。
    只能输入至少n位的数字:"^\d{n,}$"。
    只能输入m~n位的数字:。"^\d{m,n}$"
    只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
    只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
    只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
    只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
    只能输入非零的负整数:"^\-[1-9][]0-9"*$。
    只能输入长度为3的字符:"^.{3}$"。
    只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
    只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
    只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
    只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
    只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
    验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
    验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
    只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"
    验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
    验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
    验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
    验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。
    验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。
    验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。
    匹配中文字符的正则表达式: [\u4e00-\u9fa5]
    匹配双字节字符(包括汉字在内):[^\x00-\xff]
    应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
    String.prototype.len=function(){return this.replace(/[^\x00-\xff]/g,"aa").length;}
    匹配空行的正则表达式:\n[\s| ]*\r
    匹配html标签的正则表达式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
    中文字母数字下划线:^[a-zA-Z0-9_\u4e00-\u9fa5]*$
    

    本文部分引自:https://deerchao.net/tutorials/regex/regex.htm
    推荐一款在线的正则表达式调试工具:https://regex101.com/

    展开全文
  • 正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一定离不开正则表达式的配合。 1、什么是正则...
  • 正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,...
  • 1.以QLineEdit 为例 ... //QRegExp类提供使用正则表达式的模式匹配 QRegExpValidator *validator = new QRegExpValidator(rx, this);//QRegExpValidator类用于根据正则表达式检查字符串 edit_1->setValidator(v

    1.以QLineEdit 为例

    在使用输入框是,有时需要限定输入的内容为数字或其他,或者是以某种固定的形式输入字符串,比如输入年月日。

    限定只能输入数字:

    QRegExp rx = QRegExp("[0-9]+$"); //QRegExp类提供使用正则表达式的模式匹配
    QRegExpValidator *validator = new QRegExpValidator(rx, this);//QRegExpValidator类用于根据正则表达式检查字符串
    edit_1->setValidator(validator);//将此行编辑设置为只接受验证器验证通过的输入。这允许您对可能输入的文本进行任意约束。
    

    2.正则表达式

    在qt中,正则表达式的使用十分简单,更多的考验的是我们对正则表达式的掌握。

    2.1 正则表达式常用语法

    符号意义
    ^匹配行的开头
    $匹配行的结尾
    .匹配任意单个字符
    […]匹配[]中的任意一个字符
    (…)设定分组
    \转义字符
    \d匹配数字[0-9]
    \D\d 取反
    \w匹配字母[a-z],数字,下划线
    \W\w 取反
    \s匹配空格
    \S\s 取反
    +前面的元素重复1次或多次
    *前面的元素重复任意次
    ?前面的元素重复0次或1次
    {n}前面的元素重复n次
    {n,}前面的元素重复至少n次
    {n,m}前面的元素重复至少n次,至多m次
    I逻辑或

    2.2 校验数字的表达式

    1. 数字:^[0-9]*$

    2. n位的数字:^\d{n}$

    3. 至少n位的数字:^\d{n,}$

    4. m-n位的数字:^\d{m,n}$

    5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

    6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

    7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

    8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

    9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

    10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

    11. 非零的正整数:^[1-9]\d*$或 ^([1-9][0-9]*){1,3}$ 或^\+?[1-9][0-9]*$

    12. 非零的负整数:^\-[1-9][]0-9"*$或 ^-[1-9]\d*$

    13. 非负整数:^\d+$或 ^[1-9]\d*|0$

    14. 非正整数:^-[1-9]\d*|0$或 ^((-\d+)|(0+))$

    15. 非负浮点数:^\d+(\.\d+)?$或^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

    16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$或^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

    17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$或^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

    18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$或^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

    19. 浮点数:^(-?\d+)(\.\d+)?$或^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

    2.3校验字符的表达式

    1. 汉字:^[\u4e00-\u9fa5]{0,}$

    2. 英文和数字:^[A-Za-z0-9]+$^[A-Za-z0-9]{4,40}$

    3. 长度为3-20的所有字符:^.{3,20}$

    4. 由26个英文字母组成的字符串:^[A-Za-z]+$

    5. 由26个大写英文字母组成的字符串:^[A-Z]+$

    6. 由26个小写英文字母组成的字符串:^[a-z]+$

    7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

    8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

    9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

    10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

    11. 可以输入含有^ % & ’ , ; = ? $ \ " 等字符:[^%&',;=?$\x22]+

    12. 禁止输入含有~的字符:[^~\x22]+

    2.4特殊需求表达式

    1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

    2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

    3. InternetURL:[a-zA-z]+://[^\s]*^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

    4. 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

    5. 电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

    6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

    7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

    8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

    9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

    11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

    12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

    13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

    14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

    15. 钱的输入格式(1-8):

      1:有四种钱的表示形式我们可以接受:“10000.00” 和"10,000.00", 和没有 “分” 的 “10000” 和"10,000":^[1-9][0-9]*$

      2:这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

      3:一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

      4:这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

      5:必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 “10” 和 “10.2” 是通过的:^[0-9]+(.[0-9]{2})?$

      6:这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

      7:这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

      8:1到3个数字,后面跟着任意一个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

    16. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

    17. 中文字符的正则表达式:[\u4e00-\u9fa5]

    18. 双字节字符:[^\x00-\xff](包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

    19. 空白行的正则表达式:\n\s*\r(可以用来删除空白行)

    20. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*?/>

    21. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符、包括空格、制表符、换页符等等,非常有用的表达式)

    22. QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

    23. 中国邮政编码:[1-9]\d{5}(?!\d)(中国邮政编码为6位数字)

    24. ip地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)

    25. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

    展开全文
  • java 正则表达式高级篇,介绍四种常用的处理方式:匹配、分割、替代、获取,具体内容如下 package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 正则表达式 * 正则表达式 的...
  • 正则表达式, 字符串的替换与分解 ...正则表达式主要用于字符串匹配, 由一些具有特殊意义的符号和常规字符组成, 例如: 特殊符号: $ () * + . [] ? \ ^ {} 常规字符组合: \d \D \w \W \s \S \p ...

    正则表达式符号详解

    • 限定符:
      指定一个组件必须出现多少次才能满足.
      1.使用 “*”, “+”, “?” 作为限定符:
    "*": 匹配前面的子表达式零次或多次。
    	例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
    	
    "+": 匹配前面的子表达式一次或多次。
    	例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
    	
    "?": 匹配前面的子表达式零次或一次。
    	例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}。
    
    • 使用 “{ }” 作为限定符:
    "{n}": n 是一个非负整数。匹配确定的 n 次。
    	例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
    "{n,}": n 是一个非负整数。至少匹配n 次。
    	例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
    "{n,m}": m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
    	例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。
    	请注意在逗号和两个数之间不能有空格。
    
    • 正则表达式中的特殊字符:
      **注: 特殊字符作为文本时时需要通过""进行转义
      包含如下特殊字符:
    "()":
    	标记一个子表达式的开始和结束位置。
    	子表达式可以获取供以后使用 ,所获取的的匹配可以从产生的Matches集合得到
    	
    "*":
    	匹配前面的子表达式零次或多次
    
    "+":
    	匹配前面的子表达式一次或多次	
    
    "."
    	匹配除换行符 \n 之外的任何单字符	
    
    "[":
    	标记一个中括号表达式的开始
    
    "?":
    	匹配前面的子表达式零次或一次,或指明一个非贪婪限定符	
    
    "\":
    	将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
    	例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
    
    "^":
    	匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合	"{":标记限定符表达式的开始	
    
    "|":
    	指明两项之间的一个选择
    
    • 常用元字符及其意义:
    "."	代表任意一个字符
    "\d"	代表0~9任意一个数字
    "\D"	代表任意一个非数字字符
    "\s"	代表空格类字符, 例如: 回车, tab, 空格
    "\S"	代表非空格字符
    "\w"	代表可用于标识的字符
    "\W"	代表不能用于标识的字符
    "\p{Lower}"	小写字母[a-z]
    "\p{Upper}"	大写字母[A-Z]
    "p{ASCII}"	ASCII字符
    "\p{Alpha}"	字母
    "\p{Digit}"		数字[0-9]
    "\p{Alnum}"	字母或数字
    
    • 定位符:
      描述字符串或单词的边界.
      ^:字符串开始位置 $:字符串结束位置
      \b:单词前后边界(字与空格的位置) \B:非单词前后边界(即在单词内进行)
      注:
    不能将限定符与定位符一起使用。
    由于在紧靠换行或者字边界的前面或后面不能有一个以上位置,因此不允许诸如 ^* 之类的表达式。
    若要匹配一行文本开始处的文本,请在正则表达式的开始使用 ^ 字符。
    不要将 ^ 的这种用法与中括号表达式内的用法混淆。
    若要匹配一行文本的结束处的文本,请在正则表达式的结束处使用 $ 字符。
    
    • 采用花括号确定重复出现的位置:
    ^a$	字母a
    ^a{4}$	aaaa
    ^a{2,4}$	aa,aaa或aaaa
    ^a{1,3}$	a,aa或aaa
    ^a{2,}$	包含多于两个a的字符串
    ^a{2,}	如:aardvark和aaab,但apple不行
    a{2,}	如:baad和aaa,但Nantucket不行
    \t{2}	两个制表符
    .{2}	所有的两个字符
    ^[a-zA-Z0-9_]{1,}$      // 所有包含一个以上的字母、数字或下划线的字符串 
    ^[1-9][0-9]{0,}$        // 所有的正整数 
    ^\-{0,1}[0-9]{1,}$      // 所有的整数 
    ^[-]?[0-9]+\.?[0-9]+$   // 所有的浮点数
    
    • 圆括号的使用:
      使用圆括号将所选项括起来,会使相关选项被缓存,可在第一个选项前用"?:"来消除这种副作用;
      “?=”:正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串.该匹配不需要获取供以后使用,每一次的匹配是从上一次的匹配开始,而不是从包含预查的字符开始
    "Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows" 查取已包含的
    "?!": 负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
    例:例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。查取未包含的
    
    • 中括号的使用:
    中括号表达式 /chapter [12345]/ 等价于 /chapter [1-5]/ 中括号中的表达式只匹配表达式该位置的单个字符 在范围制定的过程中,需满足顺序性
    [-a-z]
    [a-z-] 表示匹配所有小写字母和连字符
    [!--]
    [!-~]开始位置字符小于连字符,结束位置大于等于连字符
    [^1-5] 查找不属于1-5的数
    例:/^Chapter|Section [1-9][0-9]{0,1}$/  匹配行首的单词 Chapter,要么匹配行尾的单词 Section 及跟在其后的任何数字
    "|"用于在多个选项中选择
    当采用括号限定查找替换的范围: /^(Chapter|Section) [1-9][0-9]{0,1}$/ 当在括号中加入?:则不保留子匹配项
    
    [a-z] //匹配所有的小写字母 
    [A-Z] //匹配所有的大写字母 
    [a-zA-Z] //匹配所有的字母 
    [0-9] //匹配所有的数字 
    [0-9\.\-] //匹配所有的数字,句号和减号 
    [ \f\r\t\n] //匹配所有的白字符
    注:只是表示单个字符 可组合使用
    
    [^a-z]       //除了小写字母以外的所有字符 
    [^\\\/\^]  //除了(\)(/)(^)之外的所有字符 
    [^\"\']     //除了双引号(")和单引号(')之外的所有字符
    
    • 总实例:
    /\b([a-z]+) \1\b/gi	一个单词连续出现的位置。
    /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/	将一个URL解析为协议、域、端口及相对路径。
    /^(?:Chapter|Section) [1-9][0-9]{0,1}$/	定位章节的位置。
    /[-a-z]/	a至z共26个字母再加一个-号。
    /ter\b/	可匹配chapter,而不能匹配terminal。
    /\Bapt/	可匹配chapter,而不能匹配aptitude。
    /Windows(?=95 |98 |NT )/	可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。
    /^\s*$/	匹配空行。
    /\d{2}-\d{5}/	验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
    /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/	匹配 HTML 标记。
    

    常用正则表达式

    1.校验数字的表达式:

    数字:^[0-9]*$
    n位的数字:^\d{n}$
    至少n位的数字:^\d{n,}$
    m-n位的数字:^\d{m,n}$
    零和非零开头的数字:
    	^(0|[1-9][0-9]*)$
    非零开头的最多带两位小数的数字:
    	^([1-9][0-9]*)+(\.[0-9]{1,2})?$
    带1-2位小数的正数或负数:
    	^(\-)?\d+(\.\d{1,2})$
    正数、负数、和小数:
    	^(\-|\+)?\d+(\.\d+)?$
    有两位小数的正实数:
    	^[0-9]+(\.[0-9]{2})?$
    有1~3位小数的正实数:
    	^[0-9]+(\.[0-9]{1,3})?$
    非零的正整数:
    	^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
    非零的负整数:
    	^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
    非负整数:
    	^\d+$ 或 ^[1-9]\d*|0$
    非正整数:
    	^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
    非负浮点数:
    	^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
    非正浮点数:
    	^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
    正浮点数:
    	^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
    负浮点数:
    	^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
    浮点数:
    	^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
    

    2.校验字符的表达式:

    汉字:
    	^[\u4e00-\u9fa5]{0,}$
    英文和数字:
    	^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    长度为3-20的所有字符:
    	^.{3,20}$
    由26个英文字母组成的字符串:
    	^[A-Za-z]+$
    由26个大写英文字母组成的字符串:
    	^[A-Z]+$
    由26个小写英文字母组成的字符串:
    	^[a-z]+$
    由数字和26个英文字母组成的字符串:
    	^[A-Za-z0-9]+$
    由数字、26个英文字母或者下划线组成的字符串:
    	^\w+$ 或 ^\w{3,20}$
    中文、英文、数字包括下划线:
    	^[\u4E00-\u9FA5A-Za-z0-9_]+$
    中文、英文、数字但不包括下划线等符号:
    	^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
    可以输入含有^%&',;=?$\"等字符:
    	[^%&',;=?$\x22]+
    禁止输入含有~的字符:
    	[^~\x22]+
    

    3.特殊需求表达式:

    Email地址:
    	^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    域名:
    	[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
    InternetURL:
    	[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    手机号码:
    	^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):
    	^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
    国内电话号码(0511-4405222、021-87888822):
    	\d{3}-\d{8}|\d{4}-\d{7}
    电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): 
    	((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)	
    身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:
    	(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
    帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
    	^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
    	^[a-zA-Z]\w{5,17}$
    强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):
    	^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
    强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):
    	^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
    日期格式:
    	^\d{4}-\d{1,2}-\d{1,2}
    一年的12个月(01~09和1~12):
    	^(0?[1-9]|1[0-2])$
    一个月的31天(01~09和1~31):
    	^((0?[1-9])|((1|2)[0-9])|30|31)$
    钱的输入格式:
    	有四种钱的表示形式我们可以接受:
    		"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
    这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:
    	^(0|[1-9][0-9]*)$
    一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:
    	^(0|-?[1-9][0-9]*)$
    这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:
    	^[0-9]+(.[0-9]+)?$
    必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:
    	^[0-9]+(.[0-9]{2})?$
    这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:
    	^[0-9]+(.[0-9]{1,2})?$
    这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:
    	^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:
    	^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
    xml文件:
    	^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
    中文字符的正则表达式:
    	[\u4e00-\u9fa5]
    双字节字符:
    	[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
    空白行的正则表达式:
    	\n\s*\r (可以用来删除空白行)
    HTML标记的正则表达式:
    	<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
    腾讯QQ号:
    	[1-9][0-9]{4,} (腾讯QQ号从10000开始)
    中国邮政编码:
    	[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
    

    备注:这就是最终结果了,别忘了"+“可以用”*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里.

    Java的Pattern与Match用于字符串匹配

    • Pattern, Match使用流程:
      1.使用Pattern静态函数 Pattern compile(String regex) 编译正则表达式.
      2.使用Pattern对象调用 Matcher matcher(CharSequence input) 针对指定的字符串, 返回一个Matcher对象(匹配器).
      3.使用匹配器执行具体的匹配或者查找方法.
      举一个最简单的例子:
    //编译正则表达式 a*b
     Pattern p = Pattern.compile("a*b");
     //获得匹配器
     Matcher m = p.matcher("aaaaab");
     //调用具体的匹配, 看输入的字符串是否满足正则表达式
     boolean b = m.matches();
    

    Pattern一般就是用于编译正则表达式, 获得Matcher对象, 其他用法就不再阐述.

    • Matcher的API:
      写一些常用 Matcher 方法
    public boolean find() :
    	在指定字符串中查找满足正则表达式的子串, 找到返回true, 反之false.
    	find(int start)//表示从指定位置开始进行查找
    public boolean matches():
    	判断指定字符串是否完全与正则表达式匹配. 成功true, 失败false.
    public String replaceAll(String replace):
    	将目标串中满足正则表达式的字符串替换成replace
    
    • 一个简单的例子:
    public class Demo4 {
        private static Pattern compile =  Pattern.compile("\\d");
        public static void main(String[] args) {
            Matcher matcher = compile.matcher("jiojdas90989diuahsd");
            while(matcher.find()){
                System.out.println(matcher.group());
            }
        }
    }
    //查找数字出现的位置
    

    上面有错, 还请指出, 如果认为我写的还不错, 还请点个赞, 多多支持一下, O(∩_∩)O~~

    展开全文
  • Python—-正则表达式

    2020-12-22 13:19:23
    常用特殊符号和字符: 匹配一个范围[]:[A-Z0-9] 匹配前面出现的正则表达式任意多次,包含0次 *:[abc]* 匹配前面出现的正则表达式0次或1次 ?:a? 匹配前面出现的正则表达式一次或多次+:a+ \d:匹配任何数字 \s:...
  • 常用正则表达式符号总结,比较全,简单易懂
  • 邮箱 ...中文、英文、数字但不包括下划线等符号 禁止输入含有^%&',;=?$"等字符 禁止输入含有~的字符 数字正则 整数 正整数 负整数 非负整数 非正整数 浮点数 正浮点数 负浮点数 非负浮点数 非正浮点数
  • js 正则表达式判断非法字符 方法一: var re=/正则表达式/;...附常用正则表达式: 验证数字的正则表达式集(转载) 验证数字:^[0-9]*$ 验证n位的数字:^\d{n}$ 验证至少n位数字:^\d{n,}$ ..
  • 1. .* 2. .* 3. .+
  • 正则表达式常用符号

    2019-11-21 16:54:01
    符号 含义 例子 匹配结果 * 匹配前面的字符、表达式或括号里的字符0次或多次 a*b* aaaa、aabb + 匹配前面的字符、表达式或括号里的字符至少一次 a+b+ aabb、abbbb ? 匹配前面的字符一次或0次 Ab? A、Ab . ...
  • 3.常用正则表达式总结:  匹配符号: 2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、...
  • 正则表达式嘛,一早就是在资源管理器找一个文件时只记住文件名中的一个或多个字,总是用的*和?,这个可以说正则表达式中常见的限定符了。
  • 常用正则表达式

    2021-03-03 16:37:13
    目录 ...常用正则表达式 1. 基本匹配 正则表达式只是我们用于在文本中检索字符串的模式。例如正则表达式 cat,表示:字母 c 后面跟着一个字母 a,再后面跟着一个字母 t。 "cat" => The cat sa
  • 主要是介绍javascript正则表达式的一些基础知识,主要是介绍javascript的正则书写方法与常用实例,需要的朋友可以参考下
  • 所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。 一、校验数字的表达式 1 数字:^[0-9]*$ 2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$ 4 m-n...
  • 常用正则表达式(数字,汉字,字符串,金额等的正则表达式
  • 常用正则表达式匹配(中文字符)

    千次阅读 2021-11-09 19:32:58
    一、校验数字的表达式 数字:1$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9])$ 非零开头的最多带两位小数的数字:^([1-9][0-9])+(.[0-9]{1,2})?$ 带1-2...
  • PHP 常用正则表达式验证规则: PHP验证手机号正则表达式代码 PHP验证邮箱地址正则表达式代码 PHP验证身份证号正则表达式代码 PHP验证是否只包含中文或英文的正则表达式代码 PHP验证QQ号码的正则表达式代码 PHP验证...
  • 最全常用正则表达式大全

    千次阅读 2021-08-11 22:45:17
    一、校验数字的表达式 1. 数字:^[0-9]*$ 2. n位的数字:^\d{n}$ 3. 至少n位的数字:^\d{n,}$ 4. m-n位的数字:^\d{m,n}$ 5. 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6. 非零开头的最多带两位小数的数字:^([1...
  • 网页爬取常用正则表达式的介绍

    千次阅读 2020-08-11 20:50:57
    0 网页爬取准备1 正则表达式基础1.1 正则表达式模式及...1.2.4 re.finditer()函数【所有】1.2.5 re.split()分割匹配的字符串1.2.6 re.sub()函数检索和替换2 常用正则表达式2.1 贪婪模式2.2 中文信息2.3 匹配空白行2.4.
  • linux常用正则表达式

    千次阅读 2021-06-08 09:09:01
    第一类正则表达式 正则中普通常用的元字符 元字符 功能 . 匹配除了换行符以外的任意单个字符 * 前导字符出现0次或连续多次 .* 任意长度字符 ^ 行首(以…开头) $ 行尾(以…结尾) ^$ 空行 [] 匹配...
  • SparkSQL HiveSQL 常用正则表达式

    千次阅读 2020-12-03 15:30:53
    SparkSQL HiveSQL 常用正则表达式 目录 SparkSQL HiveSQL 常用正则表达式 1、匹配汉字: 2、匹配手机号码 3、匹配身份证: 4、SparkSQL HiveSQL 常用正则函数: 5、SparkSQL分组 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,659
精华内容 33,863
关键字:

常用正则表达式符号