正则表达式

正则表达式

本文参考:菜鸟教程 正则表达式写的一点点笔记。

以下原文:

[ABC] 匹配 [...] 中的所有字符,例如 [aeiou] 匹配字符串 "google runoob taobao" 中所有的 e o u a 字母。
[^ABC] 匹配除了 [...] 中字符的所有字符,例如 [^aeiou] 匹配字符串 "google runoob taobao" 中除了 e o u a 字母的所有字母。
[A-Z] [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。
.   匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r]。
[\s\S]  匹配所有。\s 是匹配所有空白符,包括换行,\S 非空白符,不包括换行。
\w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]

data(\w)?\.dat ,刚开始看到这个东西,可能不知道是什么。
首先,这个东西的用处,执行他的结果,是这样的:
data.dat data1.dat data2.dat datax.dat dataN.dat
我们要知道,正则表达式,就是用来匹配文本的。
那么data(\w)?\.dat 是什么
所以实际上它就是 data拼接上了某些正则表达式再拼接上.dat ,最后执行后找到的就是data.dat data1.dat data2.dat datax.dat dataN.dat 这个。
根据原文

例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件。
? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。

噢,原来如此,?这个问号,还有这种功能。
它可以匹配字符,这个字符的长度不能超过1。
而*则可以匹配任意字符。
这就已经说明了,正则表达式的功能。
我们再看原文

通过理解 * 通配符的工作原理,引入了正则表达式所依赖的概念,但正则表达式功能更强大,而且更加灵活。

正则表达式的使用,可以通过简单的办法来实现强大的功能。

再看一个例子:
在这里插入图片描述
这里面涉及了什么?
涉及了:
[0-9]+abc$
它们分别是什么,有什么用,组合起来又是什么意思?
原文

^ 为匹配输入字符串的开始位置。

[0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。

abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。

啊,所以呢,这个^[0-9]+abc$的意思就很清楚了。
意为:以数字开头,以abc结尾

再看一个例子
我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符 -,并设置用户名的长度,我们就可以使用以下正则表达式来设定。
在这里插入图片描述
^[a-z0-9_-]{3,15}$
这个看起来是不是比较复杂。
但我们按之前的例子所给的来看,里面有的元素:
[a-z0-9_-]{3,15}
开始符和结尾符不用多赘述。
原文

以上的正则表达式可以匹配 runoob、runoob1、run-oob、run_oob, 但不匹配 ru,因为它包含的字母太短了,小于 3 个无法匹配。也不匹配 runoob$, 因为它包含特殊字符。

很容易懂,但是有个小疑问,为什么没有+也能匹配多个呢?是因为有这个{3-15}吗?
在这里插入图片描述
试了一下,似乎可以,我再试一个。
在这里插入图片描述
确实可以,我写了个^[1-3a-c]{0,6}$,然后123abc也确实能匹配上。
然后我又有个疑问了,[1-3a-c][a-c1-3]有区别吗?
在这里插入图片描述
至少在这里^[1-3a-c]{0,6}$是没区别的。
说明^[]$这种格式里面不需要区分先后。
原文
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。例如:

runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。

runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。

colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次或1次)。

? * +都是指前面一个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值