正则表达式学习笔记(二)——简单的正则表达式

一、简单的正则表达式

注意:

在使用正则表达式的时候,会发现几乎所有的问题都有不止一种解决方法。

有的比较简单,有的比较快速,有的兼容性很好,有的功能更全,同一个问题往往会有多种解决方案。


二、匹配单个字符

1、匹配纯文本

直接输入文本,就可以匹配。

如:

I am a boy.

输入正则表达式   am

   

2、多个匹配结果

绝大多数正则表达式引擎的默认行为是只返回第1个匹配结果,也有实现了一种能够把所有的匹配结果全部找出的机制(通常返回一个数组或是其他的专用格式)。

3、字母的大小写问题

绝大多数正则表达式都支持不区分字母大小写的操作,强制执行一次不区分字母大小写的搜索。

4、匹配任意字符

. 字符(英文句号)可以匹配任何一个单个的字符。

注意:

通过DOS的文件搜索功能     正则表达式 . 字符相当于DOS的?字符

SQL中的 _ (下划线) 字符   相当于正则表达式  .  字符


正则表达式可以用来匹配包含着字符串内容的模式。

匹配的并不总是整个字符串,而是与某个模式相匹配的字符——即使它们只是整个字符串的一部分。


5、匹配特殊字符


如果模式里需要一个  .  就要想办法来告诉正则表达式,你需要的是 . 本身而不是它在正则表达式里的特殊含义。

为此,必须在 .  的前面加上一个 \ (反斜杠)字符来对它进行转义。

\ 是一个元字符 (metacharacter,表示“这个字符有特殊含义,而不是字符本身含义”)


注意:

如果需要搜索 \  本身,就必须对字符进行转义,相应的转义序列是两个来许的反斜杠字符 \\ .


在绝大多数的正则表达式实现里, .  可以匹配除了换行符之外的任何单个字符。


三、匹配一组字符

1、匹配多个字符中的某一个

[ns]a.\.xls   匹配以[ns]开头 : 这个集合匹配字符n或s(但不匹配其他字符)


注意:验证某个模式能不能获得预期的匹配结果并不困难,但如何验证它不会匹配到你不想要的东西可就没那么简单了。

[Rr]eg[Ee]x   可以匹配RegEx和regex,但不匹配REGEX

如果打算进行一次不需要区分字母大小写的匹配,不需要使用这个技巧,这种模式最适合用在全局看需要区分字母大小写,但在某个局部不需要区分字母大小写的搜索操作中。


2、利用字符集合区间

A-Z  匹配从A到Z的所有大写字母

a-z   匹配从a到z的所有小写字母

A-F  匹配从A到F的所有大写字母

0-9  等价于 0123456789

#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]   用来匹配   RGB值   如:#336633 #FFFFFF


在定义一个字符区间的时候,一定要避免让这个区间的尾字符小于首字符  如: [3-1]   没有意义还会让整个模式失效

- (连字符) ,只能用在  [  和  ]  之间。


3、取非匹配

除了那个字符集合里的字符,其他字符都可以匹配。

如: [ns]a[^0-9] \.xls

^ 的效果将作用于给定字符集合中所有字符或字符区间,而不是仅限于紧跟在^字符后面的那一个字符或字符区间


4、匹配空白字符

[\b]           回退(并删除)一个字符(Backspace)

\f              换页符

\n             换行符

\r              回车符

\t              制表符(Tab键)

\v             垂直制表符

\r\n  匹配一个  “回车+换行”  组合   是 Windows所使用的文本行结束标签

Unix和Linux系统只是用一个换行符来结束一个文本行  :\n


4、使用元字符

\d   任何一个数字字符  等价于  [0-9]

\D   任何一个非数字字符   等价于  [^0-9]

\w   任何一个字母数字字符(大小写均可)或下划线字符   等价于 [a-zA-Z0-9_]

\W   任何一个非字母数字或非下划线字符   等价于  [^a-zA-Z0-9_]

\s    任何一个空白字符  等价于   [\f\n\r\t\v]

\S    任何一个非空白字符   等价于   [^\f\n\r\t\v]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值