4. 正则表达式(4)

1. 定位符与原义字符:

(1) 文本验证定位符:
定位符用于规定匹配模式在目标字符串中出现的位置。例如,规定匹配模式只能出现在开头或者结尾处,这样对于文本格式的验证非常有用。

用” ^ ” 匹配目标字符串的开始位置:

匹配必须发生在目标字符串的开头处,"^" 必须出现在表达式的最前面才具有定位符作用。
例如,"^o""ok"中的"o"匹配,但与"no"中的"o"不匹配。如果设置了RegExp对象实例的multiline属性,"^"还会与行首匹配,即与"\n","\r"之后的位置匹配。

用” $ ” 匹配目标字符串的结尾位置:

匹配必须发生在目标字符串的结尾处," $ "必须出现在表达式的最后面才具有定位符的作用。
例如,"o$""no"中的"o"匹配,但与"ok"中的"o"不匹配。如果设置了RegExp对象实例的multiline属性,"$"还会与行末匹配,即与"\n""r"之前的位置匹配。

用 ” \b “匹配一个字边界:

"\b"包含了字与空格间的位置,以及目标字符串的开始和结束位置等。
例如,"er\b"匹配"order to"中的"er",但不匹配"verb"中的"er"

用 ” \B ” 匹配非字边界:

例如,"er\B"匹配"verb"中的"er",但不匹配"order"中的"er"

2. 贪婪匹配与懒惰匹配

默认情况下,正则表达式使用最长匹配原则,即贪婪匹配原则。
例如,要将”book”中匹配”bo?”中的部分替换成”l”,替换后的结果是”lok”,而不是”look”;如果要将”book”中匹配”bo*”中的部分替换成”l”,替换后的结果是”lk”,而不是”lok”,或者”look”。
当解释器将代码中的字符解析成一个个的编译器,并在处理代码当前最小语法单元时,编译器会使用一种贪婪匹配算法,也就是说会尽可能让一个单元包含更多的字符。如果当字符”?”紧跟任何其他限定符(“*”,”+”,”?”,”{n}”,”{n,}”,”{n,m}”)之后时,匹配模式变成使用最短匹配原则,即非贪婪匹配原则。例如,在字符串”booook”中,”bo+?”只匹配”bo”部分,而”bo+”匹配”boooo”部分。


3. 选择匹配符
选择匹配符” | “,用于选择匹配两个选项之中的任意一个,其两个选项是” | ” 字符两边尽可能最大的表达式。
例如,”abcd|efghl”,匹配的是”abcd”或”efgh”,而不是”abcdl”或”efghl”;如果要匹配”abcdl”或”efghl”,应该使用括号创建子表达式,即”(abcd|efgh)l”。


4.特殊字符与字符匹配符
正则表达式中使用多种方式来表示非打印字符和原义字符,这些方式都以字符”\”后跟其他转义字符序列来表示,其中的一些方式也可以表示普通字符。字符匹配符用于匹配多个字符中的任意一个。
(1) 特殊字符
这里写图片描述
(2)字符匹配符
” […] ” 匹配方括号中包含的字符集中的任意一个字符。
这里写图片描述


5. 分组组合和反向引用符

分组组合是将表达式中某部分内容组合起来的符号,反向引用符则是用于匹配分组组合捕获到的内容的标示符。
(1) 分组组合
“(parttern)”将pattern部分组合成一个可统一操作的组合项和子匹配,每个捕获的子匹配项
这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值