正则表达式详解(一)正则表达式初步

正则表达式详解(一)正则表达式初步  ——  by Ivony...    转载请声明出处

 

 

 

 

正则表达式是干什么的:

正则表达式的作用是从一个字符串中捕获符合要求的字符串。

 

 

先看一个最简单的捕获:

正则表达式 /123/ 捕获任意字符串中的 123 。如:

a123b

aaab12bb 13123c

 

 

匹配:

如果一个字符串中存在至少一个捕获,就算这个正则表达式匹配此字符串。如果只存在一个捕获,而且此捕获是整个字符串,则算完全匹配

 

 

符号(“|”)

正则表达式 /123|a/ 捕获 123 或者 12a,如:

12ac 123

12abcc

01262312343

 

 

并:

任何两个正则表达式放在一起就成了并,如 /a/ 是一个合法的正则表达式,它捕获 a字符, /b/ 也是一个合法的正则表达式,它捕获 b字符。/ab/ 这个正则表达式捕获连在一起的 ab这样的字符串。在并的时候,两个正则表达式之间形成了断言(关于断言会在下面讲到)

 

 

括号:

可以用括号可以者强调符号的结合顺序,如正则表达式/(123)|(abc)/捕获 123或者abc

 

 

字符类:

可以用 [abc] 的形式来表示 (a|b|c) ,如:

正则表达式 /[abc]/ 捕获 ab或者 c

 

 

字符类的特殊构造:

^放在 [] 的开头表示不捕获这些字符,如:

正则表达式 /[^abc]/ 捕获除了 abc以外的任何字符。

-放在两个字符之间,表示匹配在字符表上这两个字符之间的所有字符。如:

[a-z] = [abcdefghijklmnopqrstuvwxyz]

[a-Z] = [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]

. = 任何字符(如果没有加SingleLine参数则不匹配/n

 

 

1/f/n/r/t/vC语言转义字符串含义相同。如(/n换行符, /t跳格符)

 

 

重复:

正则表达式 /a{1,3}/表示/(a)|(aa)|(aaa)/,捕获aaa或者aaa

另有特殊字符约定如下:

* = {0,无穷大}

+ = {1,无穷大}

? = {0,1}

 

 

重复可以与括号一起用,如:

正则表达式 /(abc){1,2}/捕获abc或者abcabc

 

 

零重复的作用:

零重复代表不捕获任何字符。单独使用无意义,但可以组合。如:

正则表达式/abc?/捕获ab或者abc

 

 

以上所有的不包含无穷大重复的正则表达式都可以转化为只包含,或、并和括号的正则表达式。

(如数学中的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/ 并而组成的,在ab之间就形成了断言。/ab/ 正则表达式中的 /a/ 只能捕获在字符 b前面的 a,而 /b/ 也只能捕获字符 a后面的 b

 

 

零宽度(非捕获)断言符:

$断言此处一定是字符串的结尾,如:

正则表达式/abc$/捕获在字符串结尾处的abc,而忽略字符串中间任何的abc,如:

123abcc,无捕获,不匹配。

$断言此处一定是字符串的结尾,如:

正则表达式 /abc$/捕获在字符串结尾处abc,而忽略字符串中间任何的 abc,如:

123abcc,无捕获,不匹配

abcsabc

^断言此处一定是字符串的开头

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值