正则表达式详解(⼀)正则表达式初步
正则表达式详解(⼀)正则表达式初步 —— 转载请声明出处
正则表达式的作⽤是从⼀个字符串中捕获符合要求的字符串。
先看⼀个最简单的捕获:
“a123b”
匹配:
“aaab12bb13123c”
如果⼀个字符串中存在⾄少⼀个捕获,就算这个正则表达式匹配此字符串。如果只存在⼀个捕获,⽽且此捕获是整个字符串,则算完全匹配。
可以⽤括号可以者强调符号的结合顺序,如正则表达式/(123)|(abc)/”捕获”123”或者”abc”
字符类:
可以⽤ [abc] 的形式来表⽰ (a|b|c) ,如:
正则表达式 /[abc]/ 捕获 ”a” 、”b” 或者 ”c”。
“^”
放在 [] 的开头表⽰不捕获这些字符,如:
正则表达式 /[^abc]/ 捕获除了 ”a” 、 ”b” 和 ”c”
以外的任何字符。
“-“
放在两个字符之间,表⽰匹配在字符表上这两个字符之间的所有字符。如:
[a-z] = [abcdefghijklmnopqrstuvwxyz]
[a-zA-Z] = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
[0-9] = [0123456789]
特殊的字符类:
\w = [a-zA-Z_0-9]
\W = [^\w]
\s = [ \f\n\r\t\v]
(注1)
\S = [^\s]
\d = [0-9]
\D = [^\d]
正则匹配法律条文注1:\f\n\r\t\v与C语⾔转义字符串含义相同。如(\n换⾏符, \t跳格符)重复:
字符类的特殊构造:
正则表达式 /a{1,3}/表⽰/(a)|(aa)|(aaa)/,捕获”a”、”aa”或者”aaa”。
* = {0,
⽆穷⼤}
+ = {1,
⽆穷⼤}
= {0,1}
重复可以与括号⼀起⽤,如:
正则表达式 /(abc){1,2}/捕获”abc”或者”abcabc”
。
零重复的作⽤:
零重复代表不捕获任何字符。单独使⽤没什么意义,但可以组合。如:
(如数学中的3x5 = 1x5+2x5 ^_^)
如正则表达式:/([abc]1){2,3}/ = /(((a|b|c)1)((a|b|c)1))|(((a|b|c)1)((a|b|c)1)((a|b|c)1))/
断⾔:
另有特殊字符约定如下:
任何两个合法的正则表达式并在⼀起的时候,在它们之间就形成断⾔。如正则表达式: /ab/ 是由正则表达式 /a/ 和 /b/ 并⽽组成的,在a和b之间就形成了断⾔。/ab/ 正则表达式中的 /a/ 只能捕获在字符 ”b” 前⾯的 ”a”,⽽ /b/ 也只能捕获字符 ”a” 后⾯的 ”b” 。
. = 任何字符(如果没有加SingleLine参数则不匹配”\n”)
正则表达式/ab(c?)/捕获”ab”或者”abc”。
以上所有的不包含⽆穷⼤重复的正则表达式都可以转化为只包含,或、并和括号的正则表达式。
零宽度(⾮捕获)断⾔符:
正则表达式 /abc$/捕获在字符串结尾处的abc,⽽忽略字符串中间任何的 ”abc”,如:
“123abcc”,⽆捕获,不匹配
“abcsabc”
“^”断⾔此处⼀定是字符串的开头。
“$”断⾔此处⼀定是字符串的结尾,如:
“12ac123”
“12abcc”“01262312343”
任何两个正则表达式放在⼀起就成了并,如 /a/ 是⼀个合法的正则表达式,它捕获 ”a” 字符, /b/ 也是⼀个合法的正则表达式,它捕获 ”b” 字符。/ab/ 这个正则表达式捕获连在⼀起的 ”ab”并:
这样的字符串。在并的时候,两个正则表达式之间形成了断⾔。(关于断⾔会在下⾯讲到)。
括号:
“或”符号(“|”):
正则表达式 /123|a/ 捕获 ”123” 或者 ”a”,如:
正则表达式 /123/ 捕获任意字符串中的 ”123”。如:正则表达式是⼲什么的:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论