正则表达式 新手的歧途

学习正则表达式 ,很多人都是云里雾里的,把所有东西学完了,但是还是不会用,这是为什么那?
在正则中:
①要理解单词和字符串的概念
我们的匹配是以单词开始的
\w* 我们都知道*具有贪婪性
name 用\w*匹配的结果? name
但是我们也许不知道的是\w*其实匹配到的结果集是三个串数组
str[0]=“name” str[1]="" str[2]=""
②要理解返回值的概念
当我们知道 \w*匹配到的是一个数组的情况下
那么name Regex匹配结果哪?
str[0]=“name” str[1]="" str[2]=“Regex” str[3]="" str[4]=""

③ 正确理解 ^ $ 的用途
我们用 ^\w*$来匹配 name Regex 结果 为空
这个时候我们还能说^ 定位字符串开头 $ 定位字符串结尾的吗?
但是如果我们换成name 用^\w*$ 的时候结果为
str[0]=“name” str[1]="" str[2]=""

我们^\w* 来匹配name Regex 的结果 name
我们 \w*$来匹配name Regex 的结果 Regex
准确的说 ^ 匹配的是字符串开头部分的单词
$ 匹配的是字符串结尾部分的单词

④ 一定要慎用点 .
我用.*来匹配name Regex 的结果name Regex
如果我只想用.*匹配name Reagx中的name部分哪 $.*可以吗? 不可以
.所得代表的是转移字符 \w 字符 \d数字 \s 空格 所以一定要慎用
那不用点应该怎么匹配哪?
我们\w*\s\w*来匹配name Regex 的结果name Regex
要比.可控制性强很多

⑤* ? 的使用原则
<(h|H)\d.?</(h|H)\d>
能够完美匹配 所哟 H1-H6标签
<h1 dd=“dsese” de=dd>dwdf</h1>
<h1></h1>
我们看到这里用到了.
? 这个说明<h1 后面可以是任意字符 尽可能少 去匹配 遇到?后面,就让?后面去匹配而直接使用.* 也能够
<h1 dd=“dsese” de=dd>dwdf</h1>
<h1></h1>
单是他是作为一组字符串去使用 也就说后面的</(h|H)\d>表达式失去了作用.
理解了这些概念 我想你一定能写出一个符合规定的正则表达式
理解正则就要正确理解意思6个元字符的使用,一定会让你步入正则高手的行列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值